Cod sursa(job #191184)

Utilizator O_NealS. Alex O_Neal Data 25 mai 2008 16:28:50
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include<fstream.h>

ifstream fin("fractii.in");
ofstream fout("fractii.out");

int prim( unsigned long n)
 {
          if(n==0||n==1) return 0;
          if(n==2||n==3) return 1;
          if(n%2==0) return 0;
          for(unsigned long i=3;i*i<=n; i++) 
             if(n%i==0) return 0;
          return 1;
 }
 
 
 
unsigned long cmmdc(unsigned long a, unsigned long b)
 {
                   if(a==b) return a;
                   if(a>b)  a-=b; else b-=a; 
                   return cmmdc(a,b); 
 }                   
     
          
void vector1(unsigned long n,unsigned int prime[1000000],unsigned int a[1000000])
   {
                unsigned long aux;      
                for(unsigned long i=2; i<=n; i++) 
                   { if(prim(i)) aux=i-1;
                     else { aux=1;
                            for(unsigned j=2; j<i; j++)
                                 if( cmmdc(i,j)==1 ) aux++;
                          }
                     prime[i]=aux;     
                   }
   }

                
int main()
 {
          unsigned long n,i,cont=0;
          unsigned int a[1000000],prime[1000000];
          prime[1]=0;
          fin>>n;
          
          for(i=1; i<=n;i++)
             if(prim(i)) a[i]=1; else a[i]=0;
          
          vector1(n,prime,a); 
          prime[1]=0; 
          for(i=1; i<=n; i++)
              cont+=prime[i]; 
          fout<<cont*2+1;
 }