Pagini recente » Cod sursa (job #2260569) | Cod sursa (job #675034) | Cod sursa (job #274732) | Cod sursa (job #1301385) | Cod sursa (job #2638040)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int ciur[1000001];
vector<int>prime;
long long euler(long long x)
{
long long d,cx=x;
for(auto d:prime)
{
if(x%d==0)
{
cx/=d;
cx*=d-1;
while(x%d==0)
x/=d;
}
if(d*d>x)
break;
}
if(x>1)
{cx/=x;
cx*=x-1;}
return cx;
}
long long solve(long long x)
{
long long i,s=0;
for(i=1;i<=x;i++)
s+=euler(i);
s*=2;
s-=1;
return s;
}
int main()
{
int n;
fin>>n;
for(int i=2;i*i<=n;i+=i%2+1)
if(!ciur[i])
for(int j=i*i;j<=n;j+=i)
ciur[j]=true;
for(int i=2;i<=n;i++)
if(!ciur[i])
prime.push_back(i);
fout<<solve(n);
}