Pagini recente » Cod sursa (job #2361732) | Cod sursa (job #450948) | Cod sursa (job #2760672) | Cod sursa (job #1513947) | Cod sursa (job #639066)
Cod sursa(job #639066)
#include<fstream>
#define N 500000
#include<iostream>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
char v[N];
int main()
{
register int i,j;
long *x;
long nr_fractii,n,k,m=0;
fin>>n;
k=n/6+10;
nr_fractii=n*(n-1)+1;
x=new long[k];
x[m++]=2;
for(i=1;i<N;i++)
{
if(v[i]==0)
{
x[m++]=(i<<1)|1;
if(x[m]>=n)
{
m--;
break;
}
for(j=i+((i<<1)|1);j<N;j+=(i<<1)|1)
{
v[j]=1;
}
}
}
for(i=0;i<m;i++)
{
nr_fractii=nr_fractii-(n/x[i])*(n/x[i]-1);
for(j=0;x[j]<x[i];j++)
{
nr_fractii=nr_fractii+(n/(x[i]*x[j]))*(n/(x[i]*x[j])-1);
}
}
fout<<nr_fractii<<endl;
return 0;
}