Pagini recente » Statistici Trifu Alexandra (cradle_of_pink) | Cod sursa (job #2684043) | Istoria paginii utilizator/stargold2 | Istoria paginii utilizator/horiaclement | Cod sursa (job #1791520)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
long long int div=1,sum=1;
bool sieve[1000001];
int primes[80001];
void setSieve(int n)
{
int i,j,lim=(int)sqrt(double(n));
int cnt=0;
primes[cnt]=2;
cnt++;
for(i=4;i<=n;i+=2)
sieve[i]=1;
for(i=3;i<=lim;i+=2)
{
if(sieve[i]==0)
{
primes[cnt]=i;
cnt++;
for(j=2*i;j<=n;j+=i)
sieve[j]=1;
}
}
}
int pow(int a,int b)
{
long long int p=1;
int i;
for(i=1;i<=b;i++)
p*=a;
return p;
}
void ndiv(int n)
{
int put=0,i;
for(i=0;primes[i]*primes[i]<=n&&n>1;i++)
{
while(n%primes[i]==0)
{
n=n/primes[i];
put++;
}
div*=(put+1);
div%=9973;
sum=(sum*(put-1LL)/(primes[i]-1LL))%9973;
sum%=9973;
put=0;
}
if(n>1)
{
div=div*2;
div=div%9973;
sum=sum*(n+1);
sum=sum%9973;
}
}
int main()
{
int n,i,x;
in>>x;
setSieve(1000001);
for(i=1;i<=x;i++)
{
in>>n;
div=1;
sum=1;
ndiv(n);
out<<div<<" "<<sum<<endl;
}
return 0;
}