Cod sursa(job #107911)
| Utilizator | Data | 20 noiembrie 2007 21:18:48 | |
|---|---|---|---|
| Problema | Fractii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include<stdio.h>
int main()
{ unsigned long n,phi,d,k,x,f;
FILE *fin=fopen("fractii.in","r");
fscanf(fin,"%d",&n);
fclose(fin);
f=0;
for (x=2;x<=n;x++)
{ phi=k=x;
d=2;
while (k>1 && d*d<=k)
if (k%d==0)
{ phi=phi*(d-1)/d;
do
{ k/=d; }
while (k%d==0);
}
else d+=1+k%2;
if (k==1) f+=phi;
else f+=phi*(k-1)/k;
}
FILE *fout=fopen("fractii.out","w");
fprintf(fout,"%d\n",2*f+1);
fclose(fout);
return 0;
}