Pagini recente » Arhiva de probleme | Cod sursa (job #1587988) | Cod sursa (job #1255476) | Cod sursa (job #1252999) | Cod sursa (job #2334833)
#include <stdio.h>
#include <math.h>
unsigned int N;
unsigned int C; //counts the irreducible fractions
int FareySeq[1000001];
#define True (1==1)
#define False (1==0)
unsigned char irreducible(unsigned int n, unsigned int m)
{
register unsigned int i;
unsigned int divMax = (unsigned int)sqrt(m);
if (m % n == 0)
{
return False;
}
for (i = 2; i <= divMax; ++i)
{
if (n % i == 0 && m % i == 0)
{
return False;
}
}
return True;
}
int main(void)
{
register unsigned int i, j;
FILE * fp;
C = 0;
int partialSum = 0;
//read input
fp = fopen("fractii.in", "r");
i = fscanf(fp, "%d", &N);
fclose(fp);
//initFarey Seq
for (i = 1; i <= N; ++i)
{
partialSum = ((i + 3) * i)/2;
for (j = 2; j <= i; ++j)
{
partialSum -= FareySeq[i/j];
}
FareySeq[i] = partialSum;
}
C = (FareySeq[N] - 1) * 2 - 1;
/*
for (i = 2; i <= N; ++i)
{
for (j = i + 1; j <= N; ++j)
{
if (irreducible(i, j))
{
//printf("irreductible %d/%d\n", i, j);
++C;
}
}
}
C = C * 2;
C += N + N - 1;
*/
//write result
fp = fopen("fractii.out", "w");
fprintf(fp, "%d", C);
fclose(fp);
return 0;
}