Pagini recente » Cod sursa (job #343869) | Cod sursa (job #1741792) | Cod sursa (job #2260845) | Cod sursa (job #3212764) | Cod sursa (job #2828618)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("fractii.in");
ofstream fo("fractii.out");
int totient(int x)
{
int p=1;
int copie=x;
if(x%2==0)
{
while(x%2==0)
{
p=p*2;
x/=2;
}
p/=2;
}
int d=3;
while(x!=1)
{
if(x%d==0)
{
while(x%d==0)
{
p=p*d;
x/=d;
}
p=p/d;
p=p*(d-1);
}
d+=2;
if(d*d>copie)
d=x;
}
return p;
}
int freQ[1000001];
void Prime(int n)
{
freQ[1]=1;
for(int i=2;i<=1000000;i++)
{
if(freQ[i]==0)
{
int j=2;
while(i*j<=1000000)
{
freQ[i*j]=1;
j++;
}
}
}
}
int main()
{
int n;
fi>>n;
Prime(n);
unsigned long long sum=0;
for(int i=n;i>1;i--)
{
if(freQ[i]==0)
sum=sum+2*(i-1);
else
sum=sum+2*totient(i);
}
sum++;
fo<<sum;
fi.close();
fo.close();
return 0;
}