Pagini recente » Cod sursa (job #2479677) | Cod sursa (job #1309038) | Cod sursa (job #1332765) | Cod sursa (job #2986929) | Cod sursa (job #2924154)
#include <bits/stdc++.h>
using namespace std;
long long far[1000005],euler[1000005];
int main()
{
long long n;
cin>>n;
long long ans=0;
vector<long long> primes;
memset(far,-1,sizeof(far));
for(int i=2;i<=n;i++)
{
if(far[i]==-1)
{
primes.push_back(i);
far[i]=primes.size()-1;
}
for(int j=0;j<=far[i] && i*primes[j]<=n;j++)
{
far[primes[j]*i]=j;
if(j==far[i])
euler[primes[j]*i]=euler[i]*primes[j];
else
euler[primes[j]*i]=euler[i]*(primes[j]-1);
}
}
for(int i=1;i<=n;i++)
ans+=euler[i];
cout<<ans;
return 0;
}