Pagini recente » Cod sursa (job #803627) | Cod sursa (job #1338522) | Cod sursa (job #1210605) | Cod sursa (job #87305) | Cod sursa (job #647293)
Cod sursa(job #647293)
#include<fstream>
#define MOD 9973
#define NMAX 1000000
using namespace std;
int prim[NMAX+1000],n;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int exp_log(int a,int p) {
int mask=1,sol=1;
while(mask<=p) {
if(mask&p)
sol=(sol*a)%MOD;
a=(a*a)%MOD;
mask*=2;
}
return sol;
}
void rez(long long x) {
int i,k,div=1,sum=1;
for(i=1;1LL*i*i<=x;i++)
if((x%i==0)&&(!prim[i])) {
k=1;
while(x%i==0) {
k++;
x/=i;
}
div*=k;
sum=(sum*(exp_log(i,k)-1))%MOD;
sum=(sum*(exp_log(i-1,MOD-2)))%MOD;
}
if(x>1) {
div*=2;
sum=(sum*(x+1))%MOD;
}
out<<div<<' '<<sum%MOD<<'\n';
}
void ciur() {
int i,j;
prim[1]=1;
for(i=4;i<=NMAX;i+=2)
prim[i]=1;
for(i=3;i<=NMAX;i+=2)
if(!prim[i])
for(j=3*i;j<=NMAX;j+=(i<<1))
prim[j]=1;
}
int main() {
int i;
long long x;
ciur();
in>>n;
for(i=0;i<n;i++) {
in>>x;
rez(x);
}
in.close();
out.close();
return 0;
}