Pagini recente » Cod sursa (job #1100307) | Cod sursa (job #2152173) | Cod sursa (job #411616) | Cod sursa (job #2101072) | Cod sursa (job #936050)
Cod sursa(job #936050)
#include<fstream>
#include<iostream>
#include<vector>
#include<algorithm>
#define NMAX 1000005
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n;
vector<int> prime;
bool pr[NMAX];
long long sol;
void ciur()
{
for(int i=2;i<=n;i++)
if(!pr[i])
{
for(int j=i+i;j<=n;j+=i)
pr[j]=1;
prime.push_back(i);
}
}
void totien()
{
for(int i=2;i<=n;i++)
{
int c=i;
for(int aux=i,d=0;d<prime.size() && prime[d]<=aux;d++)
{
if(binary_search(prime.begin(),prime.end(),aux))
{
c=aux-1;
break;
}
if(aux%prime[d]==0)
{
while(aux%prime[d]==0)
aux/=prime[d];
c/=prime[d];
c*=prime[d]-1;
}
}
sol+=c;
}
sol=sol*2+1;
}
int main()
{
fin>>n;
ciur();
totien();
fout<<sol<<'\n';
fin.close();
fout.close();
return 0;
}