/* Consider the fraction, n/d, where n and d are positive integers. If n #include #include #include #include "projecteuler.h" #define N 1000001 int main(int argc, char **argv) { int i; int *primes; long int count = 0; double elapsed; struct timespec start, end; clock_gettime(CLOCK_MONOTONIC, &start); if((primes = sieve(N)) == NULL) { fprintf(stderr, "Error! Sieve function returned NULL\n"); return 1; } /* For any denominator d, the number of reduced proper fractions is * the number of fractions n/d where gcd(n, d)=1, which is the definition * of Euler's Totient Function phi. It's sufficient to calculate phi for each * denominator and sum the value.*/ for(i = 2; i < N; i++) { count += phi(i, primes); } clock_gettime(CLOCK_MONOTONIC, &end); elapsed = (end.tv_sec - start.tv_sec) + (double)(end.tv_nsec - start.tv_nsec) / 1000000000; printf("Project Euler, Problem 72\n"); printf("Answer: %ld\n", count); printf("Elapsed time: %.9lf seconds\n", elapsed); return 0; }