Pagini recente » Cod sursa (job #592856) | Cod sursa (job #2846951) | Cod sursa (job #739466) | Cod sursa (job #1685067) | Cod sursa (job #880743)
Cod sursa(job #880743)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int i,t,n,aux,k,a,nr,primi[100000][2],mod=9973;
long long j,s,sol,q,l;
bool v[1000500];
void ciur()
{primi[1][1]=2;a=2;
for(i=3;i<=1000000;i+=2)
if(v[i]==0)
{
primi[a][1]=i;
a++;
for(j=i;j<=1000000;j=j+i)
v[j]=1;
}
}
int main()
{
ciur();
in>>t;
while(t)
{
s=1;nr=1;
in>>n;aux=n;
for(i=1;primi[i][1]<=n/2 && aux>1;i++)
{
if(aux%primi[i][1]==0)
{
while(aux%primi[i][1]==0)
{
aux=aux/primi[i][1];
primi[i][2]++;
}
nr=nr*(primi[i][2]+1);
sol=1;
q=primi[i][1];
l=primi[i][2]+1;
for(k=1;k<=l;k*=2) {
if(l&k)
sol=(sol*q);
q=(q*q);
}
s=s*((sol-1)/(primi[i][1]-1))%mod;
primi[i][2]=0;
}
}
if(nr==s&&s==1)
out<<2<<" "<<n+1<<'\n';
else
out<<nr<<" "<<s<<'\n';
t--;
}
in.close();
out.close();
return 0;
}