Cod sursa(job #141452)
Utilizator | Data | 23 februarie 2008 11:50:26 | |
---|---|---|---|
Problema | Fractii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <stdio.h>
long a[2000005],v[2000005];
void totient()
{ long i,j;
for (i=2;i<=2000000;i++)
v[i]=i;
for (i=2;i<=2000000;i++)
{
if (a[i]==0)
{
j=1;
while(i*j<=2000000)
{
a[i*j]=1;
v[i*j]=v[i*j]-(v[i*j]/i);
j++;
}
}
}
}
int main()
{ long long n,i,sol=1;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
totient();
scanf("%lld",&n);
for (i=2;i<=n;i++)
sol+=2*v[i];
printf("%lld",sol);
return 0;
}