Cod sursa(job #639067)

Utilizator andrei1291Balasanu Andrei Nicolae andrei1291 Data 22 noiembrie 2011 13:24:37
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#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;
}