Pagini recente » Cod sursa (job #190449) | Cod sursa (job #1100347) | Cod sursa (job #1313607) | Cod sursa (job #2104274) | Cod sursa (job #1813992)
#include <bits/stdc++.h>
using namespace std;
int MOD=9973;
int t;
long long s,a,cnt,n,k;
int lp[1000005];
vector <int> p;
int pw(int a, int p){
int ans=1;
for(int i=1;i<=p;i++) ans*=a,ans%=MOD;
return ans;
}
int main(){
ifstream in("ssnd.in");
ofstream out("ssnd.out");
in >> t;
n=1000000;
for(int i=2;i<=n;i++){
if(lp[i]==0){
p.push_back(i);
lp[i]=i;
}
for(int j=0;j<p.size() && p[j]*i<=n && p[j]<=lp[i];j++){
lp[p[j]*i]=p[j];
}
}
while(t--){
in >> n;
k=sqrt(n);
s=1; cnt=1;
for(int i=0;i<p.size() && p[i]<=k;i++){
a=0;
if(!(n%p[i])){
while(!(n%p[i])){
n/=p[i];
a++;
}
cnt*=(a+1);
s*=(pw(p[i],a+1)-1);
s/=p[i]-1;
}
}
if(n>1) cnt*=2, s*=(((n*n-1)%MOD)/(n-1));
out << cnt << ' ' << s << '\n';
}
}