Cod sursa(job #338770)
Utilizator | Florin Pogocsan Binary_Fire | Data | 6 august 2009 20:52:49 |
---|---|---|---|
Problema | Fractii | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <iostream>
using namespace std;
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 )
{
int tmp, phi = 1, a = i;
for ( int j = 2; j <= a / j; ++j )
{
tmp = 1;
while ( a % j == 0 )
a /= j, tmp *= j;
if ( tmp > 1 )
{
phi = phi*(j-1);
phi = phi*(tmp/j);
}
}
if ( a > 1 )
phi = phi * (a - 1);
ret += (phi << 1);
}
cout << ret << endl;
return 0;
}