Pagini recente » Cod sursa (job #2321425) | Cod sursa (job #469503) | Cod sursa (job #1183208) | Cod sursa (job #382551) | Cod sursa (job #639067)
Cod sursa(job #639067)
#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 n,k,m=0;
long long nr_fractii;
fin>>n;
k=n/6+10;
nr_fractii=(long)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;
return 0;
}