Pagini recente » Cod sursa (job #2912611) | Cod sursa (job #1802190) | Cod sursa (job #3157919) | Cod sursa (job #2763057) | Cod sursa (job #650683)
Cod sursa(job #650683)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long j,y,v[1000001],k;
int prim[100001];
void ciur (){
prim[1]=2;
k=1;
for(int i=3;i<=1000000;i+=2)
if(!v[i]){
k++;
prim[k]=i;
for(j=i+i;j<=1000000;j+=i)
v[j]=i;
}
}
void determinare(long long y){
long long nr, s, t, i, ex;
nr=s=1;
for(i=1;prim[i]*prim[i]<=y;i++){
if(y%prim[i]==0){
ex=1;
t=prim[i];
while(y%prim[i]==0){
t=t*prim[i];
ex++;
y/=prim[i];
}
nr*=ex;
s*=(t-1)/(prim[i]-1)%9973;
}
}
if(y!=1){
s*=(y*y-1)/(y-1)%9973;
nr*=2;
}
fout<<nr<<" "<<s%9973<<"\n";
}
int main (){
long long n ,w;
fin>>n;
ciur();
for(int j=1;j<=n;j++){
fin>>w;
determinare(w);
}
return 0;
}