Pagini recente » Cod sursa (job #363642) | Cod sursa (job #2660097) | Cod sursa (job #2785120) | Cod sursa (job #1090524) | Cod sursa (job #191184)
Cod sursa(job #191184)
#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;
}