Cod sursa(job #338764)
Utilizator | Florin Pogocsan Binary_Fire | Data | 6 august 2009 20:41:26 |
---|---|---|---|
Problema | Fractii | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <iostream>
using namespace std;
int phi(int a)
{
int tmp, ret = 1;
for ( int i = 2; i <= a / i; ++i )
{
tmp = 1;
while ( a % i == 0 )
a /= i, tmp *= i;
if ( tmp > 1 )
{
ret = ret*(i-1);
ret = ret*(tmp/i);
}
}
if ( a > 1 )
ret = ret * (a - 1);
return ret;
}
int main()
{
int N;
long long ret = 1;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
cin >> N;
for ( int i = 2; i <= N; ++i )
ret += phi(i) * 2;
cout << ret << endl;
return 0;
}