Pagini recente » Cod sursa (job #3270434) | Cod sursa (job #2413949) | Cod sursa (job #847986) | Cod sursa (job #2096224) | Cod sursa (job #687086)
Cod sursa(job #687086)
#include <fstream>
#define lim 100000
#include <cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g ("ssnd.out");
bool v[lim+1]={0};
int prim[100001];
void ciur (){
prim[1]=2;
prim[-1]=1;
for(int i=3;i<=lim;i+=2)
if(v[i]==0){
prim[++prim[-1]]=i;
for(int j=i+i;j<=lim;j+=i)
v[j]=i;
}
}
void determinare(long long r){
long long ndiv, suma, t, i, ex;
ndiv=suma=1;
for(i=1;prim[i]*prim[i]<=r;i++){
if(r%prim[i]==0){
ex=1;
t=prim[i];
while(r%prim[i]==0){
t=t*prim[i];
ex++;
r/=prim[i];
}
ndiv*= ex;
suma*=(t-1)/(prim[i]-1)%9973;
}
}
if(r!=1){
suma*=(r*r-1)/(r-1)%9973;
ndiv*=2;
}
g<<ndiv<<" "<<suma%9973<<"\n";
}
int main (){
long long n,k;
f>>n;
ciur();
for(;n;n--){
f>>k;
determinare(k);
}
return 0;
}