Pagini recente » Cod sursa (job #69466) | Cod sursa (job #917481) | Cod sursa (job #68385) | Cod sursa (job #3163878) | Cod sursa (job #3273012)
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
const int nmax = 1e6 + 5;
int n, Min[nmax];
long long numi;
bool ciur[nmax];
void Eras()
{
for(int i = 2; i * i <= nmax - 5; i ++)
if(!ciur[i])
for(int j = 2 * i; j <= nmax; j += i)
{
ciur[j] = true;
if(!Min[j]) Min[j] = i;
}
for(int i = 1; i <= nmax; i ++)
if(!ciur[i])
Min[i] = i;
}
int phi(int x)
{
int ans = x;
while(x > 1)
{
int d = Min[x];
ans = (ans / d) * (d - 1);
while(x % d == 0) x /= d;
}
return ans;
}
int main()
{
Eras();
f >> n; numi = 1;
for(int i = 2; i <= n; i ++)
numi += 2 * phi(i);
g << numi;
return 0;
}