Cod sursa(job #46706)
Utilizator | Data | 2 aprilie 2007 21:26:38 | |
---|---|---|---|
Problema | Fractii | Scor | 20 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include<stdio.h>
#include<math.h>
long v[1000002],k;
int tot(long n)
{
long i;
long s=1;
s=n;
i=3;
for (i=2;i<=n;i++) if (n%i==0&&v[i]==0) s=s-s/i;
return s;}
int main()
{long nr,n,i,sol=0,j;
FILE*f=fopen("fractii.in","r");
FILE*g=fopen("fractii.out","w");
fscanf(f,"%ld",&n);
for (i=2;i*i<=n;i++)
if (v[i]==0)
{j=2;
while(i*j<=n) {v[i*j]=1; j++;} }
sol=1;
for (i=2;i<=n;i++) sol+=2*tot(i);
fprintf(g,"%ld",sol);
fclose(f);
fclose(g);
return 0;}