Pagini recente » Cod sursa (job #2456623) | Cod sursa (job #2780850) | Cod sursa (job #3269894) | Cod sursa (job #2868127) | Cod sursa (job #431190)
Cod sursa(job #431190)
#include <fstream>
#include <math.h>
using namespace std;
int m,numar,n,p,set,x,t,i,j,a[100000];
long long nr;
float prod;
bool prim[1000000];
int putere(int num,int p)
{
int i,sol=1;
for(i=0;(1<<i)<=p;++i)
{
if (((1<<i)&p)>0) sol=(sol*num)%m;
num=(num*num)%m;
}
return sol;
}
int main()
{
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
m=9973;
n=0;
for(i=2;i<=1000000;i++)
if(!prim[i]) { a[++n]=i; for(j=2*i;j<=1000000;j+=i) prim[j]=1; }
fi>>t;
for(set=1;set<=t;set++)
{
fi>>nr;
x=(int)sqrt(nr);
prod=1; numar=1;
i=1;
for(i=1;i<=n&&a[i]<=x;i++)
{
p=0;
while(nr%a[i]==0) { nr/=a[i]; p++; }
prod*=((putere(a[i],p+1)-1)/(a[i]-1))%m;
numar*=(p+1);
}
if(numar==(int)prod==1) fo<<"2 "<<nr+1<<"\n"; else
fo<<numar<<" "<<(int)prod<<"\n";
}
fo.close();
return 0;
}