Pagini recente » Cod sursa (job #1946545) | Cod sursa (job #638021) | Cod sursa (job #2989639) | Cod sursa (job #320548) | Cod sursa (job #473306)
Cod sursa(job #473306)
#include<fstream>
#define NMAX 1000003
#define MOD 9973
using namespace std;
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
long long n;
int pr[NMAX],f[NMAX];
char p[NMAX];
long long fp[NMAX];
bool isNotPr[NMAX];
int t,nPr,nf;
void primeNumbers() {
int i,j;
i=1;
while(i<NMAX) {
do ++i; while(i<NMAX && isNotPr[i]);
pr[nPr++]=i;
for(j=i+i;j<NMAX;j+=i) isNotPr[j]=1;
}
}
void decompose(long long n) {
nf=0;
int i=0;
while(i<NMAX && n>1) {
if(!(n%pr[i])) {
f[nf]=pr[i];
p[nf]=0;
fp[nf]=1;
do {
n/=f[nf];
++p[nf];
fp[nf]*=f[nf];
} while(!(n%f[nf]));
++nf;
}
++i;
}
if(n>1) {
f[nf]=1;
p[nf]=1;
fp[nf++]=n*n;
}
}
long long nr() {
long long res=1;
for(int i=0;i<nf;i++) res*=(p[i]+1);
return res;
}
long long sum() {
long long res=1;
for(int i=0;i<nf;i++) res=res*((fp[i]*f[i]-1)/(f[i]-1))%MOD;
return res;
}
int main() {
primeNumbers();
fi>>t;
while(t--) {
fi>>n;
decompose(n);
fo<<nr()<<' '<<sum()<<"\n";
}
return 0;
}