Cod sursa(job #232103)

Utilizator NapsterBardas Alexandru Napster 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;
}