Cod sursa(job #2225704)

Utilizator shantih1Alex S Hill shantih1 Data 28 iulie 2018 00:23:24
Problema Fractii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin("fractii.in");
ofstream fout("fractii.out");


 long long n,i,j,k,rez,sq,nnr,a;
 long long nd,dv[600005],c[1000005],nr[100000],s[1000005];
 bool pr[1000005];

int main () {
	
	fin>>n;
	 sq=sqrt(n);
	 for(i=2;i<=n;i++)
		if(pr[i]==0&&i<=sq)
		{
	 nr[++nnr]=i;
	 c[i]=1;
	 for(j=i+i;j<=n;j+=i)
	 pr[j]=1;
		}
	 for(i=sq+1;i<=n;i++)
		if(pr[i]==0)
	 nr[++nnr]=i,c[i]=1;
	 
	 for(i=2;i<=n;i++)
		if(c[i]||!pr[i])
		{	
	 dv[++nd]=i;
	 for(j=1;i*nr[j]<=n;j++)
	 if(i%nr[j]>0)
	 c[i*nr[j]]++;
		}
	 
	 for(i=1;i<=nd;i++)
	 {
		a=dv[i];
		if(c[a]%2==1)	k=1;
		else			k=-1;
		for(j=a;j<=n;j+=a)
	 s[j]+=k*j/a;
	 }
	 
	 for(i=2;i<=n;i++)
		rez+=i-s[i];
	 
	 rez=rez*2+1;
	 fout<<rez<<"\n";
	return 0;
}