Pagini recente » Cod sursa (job #285194) | Cod sursa (job #2773699) | Cod sursa (job #26923) | Cod sursa (job #2447499) | Cod sursa (job #650687)
Cod sursa(job #650687)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
bool v[1000001]={0};
int prim[100001];
void ciur (){
prim[1]=2;
prim[-1]=1;
for(int i=3;i<=1000000;i+=2)
if(v[i]==0){
prim[++prim[-1]]=i;
for(int 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();
while(n--){
fin>>w;
determinare(w);
}
return 0;
}