Cod sursa(job #83883)
| Utilizator | Data | 12 septembrie 2007 11:31:47 | |
|---|---|---|---|
| Problema | Fractii | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.79 kb |
#include<stdio.h>
#define Nmax 1000000
long N=0;
long A[Nmax];
int main ()
{
FILE *in = fopen ("fractii.in", "rt");
FILE *out = fopen ("fractii.out", "wt");
fscanf (in, "%ld", &N);
A[1]=0;
for (long i=2;i<=N;i++)
{
if(!A[i])
{
A[i]=i-1;
for(long 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(long i=1;i<=N;i++)
Sol+=A[i];
Sol=Sol*2+1;
fprintf (out, "%lld", Sol);
fclose (in);
fclose (out);
return 0;
}
