Cod sursa(job #245485)

Utilizator BursuceluHaldan Catalin Bursucelu Data 18 ianuarie 2009 09:12:13
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
    #include <stdio.h>  
      
    int prim(long n)  {  
     if ((n == 0) || (n == 1)) return 0;  
        if ((n%2 == 0) && (n>2)) return 0;  
        long i;  
        for (i=3; i<=(int)(sqrt(n)); i+=2)  
            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 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;  
   }