Cod sursa(job #288524)

Utilizator mihaionlyMihai Jiplea mihaionly Data 25 martie 2009 21:22:10
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#define dim 1000100
using namespace std;
typedef unsigned long long tip;
ifstream f("fractii.in");
ofstream g("fractii.out");
tip s,n,a[dim],i,j;
void eratostene()
 {
 //memset(a,1,n);
 for(i=2;i<=n;i++) a[i]=1;    
 for(i=2;i<=n;i++)
  {
  if(a[i]!=0)
   {
   a[i]=i;          
   for(j=2*i;j<=n;j+=i)
    a[j]=0;  
   }                 
  }
 }
void fprimi()
 {
 eratostene(); 
 for(i=2;i<=n;i++)
  {
  for(j=i;i*j<=n;j++)
   a[i*j]=a[i];
  }
 }
int merge(int d1,int d2) //fractie de forma d1/d2
 {    
 tip l;
 for(l=d1;l>1;l/=a[l])
  {
  if(d2%a[l]==0)
   return 0;
  }
 return 1;
 }
int main()
 {
 f>>n;
 s=n;
 fprimi();
 for(i=2;i<=n;i++)
  {
  s++;         
  for(j=2;j<=n;j++)
   {
   if(merge(i,j))
    s++;                
   }
  }
 g<<s;
 return 0;         
 }