Pagini recente » Cod sursa (job #1526730) | Cod sursa (job #898805) | Cod sursa (job #2142054) | Cod sursa (job #893420) | Cod sursa (job #340329)
Cod sursa(job #340329)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MY_FILE_NAME "fractii"
void read_data( int *n )
{
FILE *f = fopen( MY_FILE_NAME".in", "r" );
fscanf( f, "%i", n );
}
void write_response( long long response )
{
FILE *f = fopen( MY_FILE_NAME".out", "w" );
fprintf( f, "%lli", response );
}
int main()
{
static int v[1000000] = {0};
int v_max = 0;
int n = 0;
int response = 1; // contine 1/1
read_data( &n );
// pregatim vectorul de numere prime
v[v_max++] = 2;
for ( int i = 3; i < n; i++ ) {
const int limit = (int) ( false /*i < 10000*/ ? i/2 : sqrt( (float) i ) );
bool prim = true;
for ( int j = 0; j < v_max && v[j] <= limit; j++ ) {
if ( 0 == i % v[j] ) {
prim = false;
break ;
}
}
if ( prim )
v[v_max++] = i;
}
// calculam
for ( int i = 1; i <= n; i++ ) {
for ( int j = i+1; j <= n; j++ ) {
bool primes = true;
for ( int k = 0; k < v_max; k++ ) {
if ( 0 == i % v[k] && 0 == j % v[k] ) {
primes = false;
break ;
}
}
if ( primes )
response += 2;
}
}
write_response( response );
return 0;
}