Pagini recente » Cod sursa (job #122665) | Cod sursa (job #1186209) | Cod sursa (job #2846385) | Cod sursa (job #1598414) | Cod sursa (job #3273214)
#include <bits/stdc++.h>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
int j,Min[1000005];
long long nr=1;
bool p[1000005];
void ciur()
{
int i;
for(i=2;i*i<=1000000;i++)
if(p[i]==false)
for(j=2*i;j<=1000000;j+=i)
{
p[j]=true;
if(!Min[j])Min[j]=i;
}
for(i=1;i<=1000000;i++)
if(!p[i])Min[i]=i;
}
int euler( int x)
{
int r=x, d=2;
while(x>1)
{
d=Min[x];
r=(r/d)*(d-1);
while(x%d==0)x/=d;
}
return r;
}
int main()
{
int n;
f>>n;
ciur();
for(int i=2;i<=n;i++)
{
nr+=euler(i)*2;
}
g<<nr;
return 0;
}