Cod sursa(job #232115)

Utilizator NapsterBardas Alexandru Napster Data 14 decembrie 2008 19:22:48
Problema Fractii Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.75 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;
    }
    unsigned long long t=0;
    while (j*2 <= n) {
          if (a[j] == j-1)
    for (i=2*j; i<=n; i=i+j) 
         a[i]=a[i]/j*(j-1);
         t=t+2*a[j];
    j++;
    }
    for (i=n/2+1; 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;
}