Pagini recente » Cod sursa (job #2915077) | Cod sursa (job #3228688) | Cod sursa (job #494377) | Cod sursa (job #92523) | Cod sursa (job #1262722)
#include <stdio.h>
#include <stdlib.h>
int nrdiv, s, ciur[1000001];
void ciurul(){
int i, j;
ciur[0]=1;
ciur[1]=1;
for(i=2;i<1000001;i++){
if(ciur[i]==0){
for(j=i+i;j<1000001;j+=i)
ciur[j]=1;
}
}
}
int putere(int n, int put){
int p;
p=1;
while(put>0){
p*=n;
put--;
}
return p;
}
void factoriprimi(int n, int fp, int nrp){
int fnou;
//printf(" n=%d => %d^%d=%d\n", n, fp, nrp, putere(fp, nrp));
//printf(" => nrdiv=%d, s=%d\n", nrdiv, s);
if(n%fp==0)
factoriprimi(n/fp, fp, nrp+1);
else{
if(fp<=n){
nrdiv*=nrp+1;
s*=(putere(fp, nrp+1)-1)/(fp-1);
fnou=fp+1;
while(ciur[fnou]!=0 && fnou<=n)
fnou++;
factoriprimi(n, fnou, 0);
}
if(n==1){
nrdiv*=nrp+1;
s*=(putere(fp, nrp+1)-1)/(fp-1);
s%=9973;
}
}
}
int main(){
FILE *fin, *fout;
int t, i, nr;
fin=fopen("ssnd.in", "r");
fout=fopen("ssnd.out", "w");
fscanf(fin, "%d", &t);
for(i=0;i<t;i++){
fscanf(fin, "%d", &nr);
//printf("\n\n%d =>\n", nr);
nrdiv=1;
s=1;
factoriprimi(nr, 2, 0);
fprintf(fout, "%d %d\n", nrdiv, s);
}
fclose(fin);
fclose(fout);
return 0;
}