Pagini recente » Cod sursa (job #1116392) | Cod sursa (job #2333588) | Cod sursa (job #3292134) | Cod sursa (job #823493) | Cod sursa (job #2120182)
#include<cstdio>
using namespace std;
FILE *fin = fopen( "fractii.in" , "r" ), *fout = fopen( "fractii.out" , "w" );
const int nmax = 1000000;
long long s;
long long e[ nmax + 1 ];
void calc( int n ) {
/// numar doar fractiile ireductibile
/// initial pp numarator < numitor (fie x si y)
/// d(x, y) = 1
/// cate x exista pt un y? fix phi(y) = indicatorul lui euler
/// care se calculeaza cu formula de pe wiki
for( int i = 2; i <= n; ++ i ) {
e[ i ] = i;
}
for( int i = 2; i <= n; ++ i ) {
if (e[ i ] == i) {
for( int j = i; j <= n; j += i ) {
e[ j ] = e[ j ] / i * (i - 1);
}
}
}
/// aflu cate sunt in total cu x < y, y >= 2
for( int i = 2; i <= n; ++ i ) {
s += e[ i ];
}
}
int main() {
int n;
fscanf( fin, "%d", &n );
calc( n );
/// ans = 2 * s + 1
/// pt ca exista si cele cu x > y (nr egal cu x < y)
/// si 1 / 1 pe care n am luat-o in considerare in s
fprintf( fout, "%lld\n", 2 * s + 1 );
fclose( fin );
fclose( fout );
return 0;
}