Pagini recente » Cod sursa (job #846754) | Cod sursa (job #2806648) | Cod sursa (job #2736139) | Cod sursa (job #111672) | Cod sursa (job #2587997)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
const int MAX=1000005;
int n,v[MAX],p[MAX],m,i,j,d,eul,cnt;
int euler(int x)
{
d=1;
eul=x;
while(p[d]*p[d]<=x)
{
if(x%p[d]==0)
{
eul/=p[d];
eul*=p[d]-1;
while(x%p[d]==0)
x/=p[d];
}
d++;
}
if(x>1)
{
eul/=x;
eul*=x-1;
}
return eul;
}
int main()
{
fin >> n;
for(i=2;i<=n;i++)
if(!v[i])
{
p[++m]=i;
for(j=2*i;j<=n;j+=i)
v[j]=1;
}
for(i=1;i<=n;i++)
cnt+=euler(i);
fout << 2*cnt-1;
return 0;
}