Pagini recente » Cod sursa (job #2677861) | Cod sursa (job #3165779) | Cod sursa (job #870678) | Cod sursa (job #2664881) | Cod sursa (job #2587994)
#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++)
{
for(j=(n/i)*i+1;j<=n;j++)
cnt++;
cnt+=(n/i)*euler(i);
}
fout << cnt;
return 0;
}