Pagini recente » Cod sursa (job #466399) | Cod sursa (job #567521) | Cod sursa (job #266452) | Cod sursa (job #1600760) | Cod sursa (job #1813996)
#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;
long long pw(long long a, int p){
long long ans=1;
for(int i=1;i<=p;i++) ans*=a;
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)/(p[i]-1));
s%=MOD;
}
}
if(n>1) cnt*=2, s*=((n*n-1)/(n-1)),s%=MOD;
out << cnt << ' ' << s << '\n';
}
}