Pagini recente » Cod sursa (job #605948) | Cod sursa (job #3279438) | Cod sursa (job #1789332) | Cod sursa (job #154689) | Cod sursa (job #2455468)
#include <fstream>
using namespace std;
ifstream cin("fractii.in");
ofstream cout("fractii.out");
int N, fact[1000100][10];
long long ans, ind, inm, imp;
void premake();
int main()
{
cin>>N;
premake();
ans=0;
for(int nr=2; nr<=N; ++nr)
{
ind=nr; imp=1; inm=1;
for(int i=1; i<=fact[nr][0]; ++i)
imp*=fact[nr][i], inm*=(fact[nr][i]-1);
ind/=imp;
ind*=inm;
ans+=ind;
}
cout<<(ans*2)+1<<'\n';
return 0;
}
void premake()
{
bool ciur[1000100]={0};
ciur[1]=ciur[0]=1;
fact[2][fact[2][0]=1]=2;
for(int i=4; i<=N; i+=2)
fact[i][++fact[i][0]]=2;
for(int i=3; i<=N; i+=2)
if(ciur[i]==0)
{
fact[i][++fact[i][0]]=i;
for(int j=2; j*i<=N; j++)
ciur[i*j]=1, fact[i*j][++fact[i*j][0]]=i;
}
}