Pagini recente » Cod sursa (job #2283365) | Cod sursa (job #1148915) | Cod sursa (job #973224) | Cod sursa (job #2311501) | Cod sursa (job #508504)
Cod sursa(job #508504)
#include <fstream>
#include <iostream>
using namespace std;
int p[200000], np, e[1000001];
void erat()
{
e[0]=e[1]=1;
for(int i=1;i<=1000;++i)
if(e[i]==0)
for(int j=2;i*j<=1000000;++j)
e[i*j]=1;
for(int i=1;i<=1000000;++i)
if(e[i]==0)
p[++np]=i;
}
int fi(int n)
{
int prod=n, q,d=1;
while(n>1)
{
q=0;
while(n%p[d]==0)
n/=p[d], ++q;
if(q)
prod-=prod/p[d];
d++;
if(p[d]*p[d]>n && n>1)
{
prod-=prod/n;
n=1;
}
}
return prod;
}
int main()
{
erat();
ifstream fin("fractii.in");
int n;
fin>>n;
long long int sum=1;
for(int i=2;i<=n;++i)
sum+=2*fi(i);
ofstream fout("fractii.out");
fout<<sum<<endl;
return 0;
}