Pagini recente » Rating Maria Maiorescu (maria-owd) | Cod sursa (job #1181692) | Rating Bahnaru Alexandru (bahnarualexandru) | Istoria paginii utilizator/mariammm09 | Cod sursa (job #936043)
Cod sursa(job #936043)
#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(size_t aux=i,d=0;prime[d]<=aux;d++)
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;
}