Pagini recente » Cod sursa (job #1319814) | Cod sursa (job #1773753) | Cod sursa (job #1504392) | Cod sursa (job #3224397) | Cod sursa (job #664547)
Cod sursa(job #664547)
#include<stdio.h>
#include<math.h>
using namespace std;
long long t,b,nr,nrdiv,suma,aux,x,prim[1000010],pute1,i,aux1,j;
bool ok,ch[1000010];
void ciur() {
prim[0]=2; nr=0;
for(i=1;i<=1000000;i++) {
if(!ch[i])
{
prim[++nr]=2*i+1;
for(j=2*i*i+2*i;j<=1000000;j+=2*i+1)
ch[j]=true;
}
}
}
long long putere(int r,int s) {
if (s==0) return 1;
if (s%2==0) {
aux=putere(r,s/2);
return (aux*aux);
}
if (s%2==1) return (r*putere(r,s-1));
}
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld\n",&t);
ciur();
for (i=1;i<=t;i++){
scanf ("%lld\n",&b);
nr=-1;nrdiv=1;aux1=b;ok=true;suma=1;
while (b!=1 & prim[nr]<=sqrt(aux1)){
nr++;
if (b%prim[nr]==0){
while (b%prim[nr]==0){
x++;
b=b/prim[nr];
}
nrdiv=nrdiv*(x+1);
suma=(suma*((putere(prim[nr],x+1)-1)/(prim[nr]-1))%9973)%9973;
x=0;
}
}
printf("%lld ",nrdiv);
printf("%lld\n",suma);
}
return 0;
}