Cod sursa(job #1425659)

Utilizator mihaistanusoiuStanusoiu Mihai mihaistanusoiu Data 27 aprilie 2015 20:57:56
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
int n,i,j,prim[1000001],neprim[1000001],m,k,t,A[1000001],sol,p,nr;
bool Q[101];

int main ()
{
	f>>n;
	sol=n;
	A[2]=1;
	for(i=4;i<=n;i+=2)
		Q[i]=1,A[2]++;
	for(i=3;i<=n;i+=2)
	{
		A[i]=1;
		for(j=i+i;j<=n;j+=i)
			Q[j]=1,A[i]++;
	}
	for(i=2;i<=n;i++)
		if(Q[i]==0)
			prim[++m]=i,sol+=n-A[i];
		else
			neprim[++k]=i;
	for(i=1;i<=k;i++)
	{
		p=1,nr=0,t=0;
		for(j=1;j<=m;j++)
			if(neprim[i]%prim[j]==0)
			{
				p*=prim[j],t++;
				nr+=A[prim[j]];
			}
		for(j=p;j<=n;j+=p)
			nr=nr-(t-1);
		sol+=n-nr;
	}
	g<<sol;
	return 0;
}