Pagini recente » Cod sursa (job #297738) | Cod sursa (job #85669) | Cod sursa (job #2864023) | Cod sursa (job #2965144) | Cod sursa (job #2097428)
#include <iostream>
#include <fstream>
using namespace std;
long long n, rez1;
int vp[1000002], nrp;
bool ciur[1000002];
long long pwr (int a, int b)
{
if(b == 0)
return 1;
else
{
long long p = pwr(a, b / 2);
if(b % 2 == 1)
{
return p * p * a;
}
else
return p * p;
}
}
int main()
{
ifstream fin ("fractii.in");
ofstream fout ("fractii.out");
fin >> n;
for(int i = 2; i <= n; i++)
{
if(ciur[i] == 0)
{
nrp++;
vp[nrp] = i;
for(long long j = 2 * i; j * j <= n; j += i)
ciur[j] = 1;
}
}
for(int i = 1; i <= n; i++)
{
int j = 1, p, k, x = i, rez = 1;
while(x > 1)
{
p = vp[j];
if(p * p > x)
p = x;
k = 0;
while(x % p == 0)
{
k++;
x /= p;
}
if(k >= 1)
{
//fout << p << "^" << k << " -> ";
rez *= (p - 1) * pwr(p, k - 1);
//fout << (p - 1) * pwr(p, k - 1) << "\n";
}
j++;
}
rez1 += rez;
//fout << "\n";
}
fout << rez1 * 2 - 1;
return 0;
}