Cod sursa(job #232107)

Utilizator NapsterBardas Alexandru Napster Data 14 decembrie 2008 19:11:52
Problema Fractii Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.76 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);
        }
    if (j>2)j+=2;
       else 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;
}