Pagini recente » Cod sursa (job #3284857) | Cod sursa (job #1773527) | Cod sursa (job #3155008) | Cod sursa (job #1245409) | Cod sursa (job #2227196)
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000000
#define NRMAX 80000
#define MOD 9973
long long putere( long long a, int n ) {
long long p = 1;
while ( n ) {
if ( n & 1 )
p *= a;
a *= a;
n >>= 1;
}
return p;
}
char ciur[MAX + 1];
int prime[NRMAX], nr;
int main() {
FILE *fin, *fout;
fin = fopen( "ssnd.in", "r" );
fout = fopen( "ssnd.out", "w" );
int d, i, t, n, p;
ciur[1] = 1;
for ( d = 2; d * d <= MAX; d++ )
if ( ciur[d] == 0 ) {
prime[nr++] = d;
for ( i = d * d; i <= MAX; i += d )
ciur[i] = 1;
}
for ( i = 2; i < MAX; i++ )
if ( ciur[i] == 0 )
prime[nr++] = i;
fscanf( fin, "%d", &t );
int nrdiv, suma;
while ( t-- ) {
fscanf( fin, "%d", &n );
i = 0;
nrdiv = 1;
suma = 1;
while ( prime[i] * prime[i] <= n ) {
p = 0;
while ( n % prime[i] == 0 ) {
p++;
n /= prime[i];
}
nrdiv *= p + 1;
suma = ( 1LL * suma * ( ( putere( prime[i], p + 1 ) - 1) / ( prime[i] - 1 ) ) ) % MOD;
i++;
}
if ( n != 1 ) {
nrdiv *= 2;
suma = ( 1LL * suma * ( n * n - 1 ) / ( n - 1 ) ) % MOD;
}
fprintf( fout, "%d %d\n", nrdiv, suma );
}
fclose( fin );
fclose( fout );
return 0;
}