Cod sursa(job #6657)
Utilizator | Stancu George tancu | Data | 20 ianuarie 2007 14:52:00 |
---|---|---|---|
Problema | Fractii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.47 kb |
#include<stdio.h>
#include<math.h>
FILE *f1,*f2;
int main()
{long int j,i,v[1000];long unsigned s,n,p;int nr,ok;
f1=fopen("fractii.in","r");
f2=fopen("fractii.out","w");
v[0]=1;
v[1]=2;
nr=1;
fscanf(f1,"%lu",&n);
fclose(f1);
if(n<=1)s=n;
else {
s=3;
for(i=3;i<=n;i++){
p=i;j=1;ok=0;while((j<nr)&&(v[j]<=sqrt(i)))
{
if(i%v[j]==0){ok=1;p=p/v[j]*(v[j]-1);}
j++;}
if((!ok)&&(i>v[nr])){v[++nr]=i;p=p/i*(i-1);}
s+=2*p;
} }
fprintf(f2,"%lu",s);
fclose(f2);return 0;}