Pagini recente » Cod sursa (job #2967262) | Cod sursa (job #2470500) | Borderou de evaluare (job #996816) | Cod sursa (job #1262514) | Cod sursa (job #2828335)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n, s;
int indicator_euler(int n)
{
int d = 2, cnt = 1, f = 1, copie = n;
while(n > 1)
{
int p = 0;
while(n % d == 0)
n /= d, p++;
cnt *= (p + 1);
f *= ((d - 1) * pow(d, p - 1));
d++;
if(d * d > n)
d = n;
}
if(cnt == 2)
return copie - 1;
return f;
}
int cmmdc(int n, int m)
{
if(n == m)
return n;
if(n < m)
swap(n, m);
while(m)
{
int r = n % m;
n = m;
m = r;
}
return n;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)
{
s += indicator_euler(i);
for(int j = i + 1; j <= n; ++j)
if(cmmdc(i, j) == 1)
s++;
}
fout << s;
return 0;
}