Cod sursa(job #198598)

Utilizator TrumpCardPopescu Silviu TrumpCard Data 12 iulie 2008 20:58:53
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
int a[1000001];
int cmmdc(int a, int b)  
   {int r;
    while(b) {r= a%b; a=b; b=r;}
    return a;
   }  
int main(int argc, char** argv) 
{  
  freopen("fractii.in", "r", stdin);
   long n,nr=0;
   int i,j;
   scanf("%ld", &n); fclose(stdin);
   for(int i=0;i<1000001;i++)a[i]=i;  
    for(int i=2;i<1000001;i++)  
         if(a[i]==i)  
         { for(int j=2;j*i<1000001;j++)a[j*i]=a[j*i]/i*(i-1);  
             a[i]=i-1;  
         }     
   
       
     nr=1;  
     for(int i=2;i<=n;i++)  
         {  
         nr+=2*a[i];} 
   freopen("fractii.out", "w", stdout);
   printf("%ld", nr); fclose(stdout);
   return 0;
}