Mai intai trebuie sa te autentifici.
Cod sursa(job #232103)
| Utilizator | Data | 14 decembrie 2008 18:59:36 | |
|---|---|---|---|
| Problema | Fractii | Scor | 80 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
#include <stdio.h>
int prim(long n) {
if ((n == 0) || (n == 1)) return 0;
long i;
for (i=2; i<=(int)(sqrt(n)); i++)
if (n%i == 0) return 0;
return 1;
}
int main() {
FILE *f = fopen("fractii.in","r");
long n, i;
fscanf(f,"%ld",&n);
fclose(f);
long j = 2;
long a[n+1];
for (i=1; i<=n; i++) {
if (prim(i)) a[i]=i-1;
else a[i]=i;
}
while (j*2 <= n) {
if (prim(j))
for (i=2*j; i<=n; i=i+j) {
a[i]=a[i]/j*(j-1);
}
j++;
}
unsigned long long t=0;
for (i=2; i<=n; i++)
t = t + 2*a[i];
t=t+a[1];
f = fopen("fractii.out","w");
fprintf(f,"%lld",t);
fclose(f);
return 0;
}
