Cod sursa(job #83876)
| Utilizator | Data | 12 septembrie 2007 10:20:09 | |
|---|---|---|---|
| Problema | Fractii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.79 kb |
#include<stdio.h>
#define Nmax 1000000
int N=0;
long long A[Nmax];
int main ()
{
FILE *in = fopen ("fractii.in", "rt");
FILE *out = fopen ("fractii.out", "wt");
fscanf (in, "%d", &N);
A[1]=0;
for (int i=2;i<=N;i++)
{
if(!A[i])
{
A[i]=i-1;
for(int j=2;j<=N/i;j++)
{
if(!A[i*j])
A[i*j]=i*j;
A[i*j]*=(i-1);
A[i*j]/=i;
}
}
}
long long Sol=0;
for(int i=1;i<=N;i++)
Sol+=A[i];
Sol=Sol*2+1;
fprintf (out, "%d", Sol);
fclose (in);
fclose (out);
return 0;
}
