Pagini recente » Cod sursa (job #2503062) | Cod sursa (job #632224) | Cod sursa (job #3262528) | Cod sursa (job #2577960) | Cod sursa (job #1260019)
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin( "ssnd.in" );
ofstream fout( "ssnd.out" );
const int nmax = 1000000;
const int pmax = 80000;
const int mod = 9973;
int sum, nrd, nrp, prim[ pmax ];
bitset <nmax> ciur;
void make_ciur() {
for( int i = 2; i * i < nmax; ++ i ) {
if ( ciur[ i ] == 0 ) {
for( int j = i * i; j < nmax; j += i ) {
ciur[ j ] = 1;
}
}
}
nrp = 0;
for( int i = 2; i < nmax; ++ i ) {
if ( ciur[ i ] == 0 ) {
prim[ nrp ++ ] = i;
}
}
}
void solve( long long n ) {
long long p, e, k;
sum = 1;
nrd = 1;
k = n;
for( int i = 0; i < nrp && prim[ i ] * prim[ i ] <= n; ++ i ) {
e = 0; p = 1;
while ( k % prim[ i ] == 0 ) {
++ e;
p *= prim[ i ];
k /= prim[ i ];
}
if ( e > 0 ) {
sum *= ( p * prim[ i ] - 1 ) / ( prim[ i ] - 1 );
sum %= mod;
nrd *= ( e + 1 );
}
}
if ( k > 1 ) {
sum *= ( 1 + k );
sum %= mod;
nrd *= 2;
}
}
int main() {
long long t, n;
fin >> t;
make_ciur();
while( t -- ) {
fin >> n;
solve( n );
fout << nrd << " " << sum << "\n";
}
fin.close();
fout.close();
return 0;
}