Consider the fraction, n/d, where n and d are positive integers. If n ≤ d and HCF(n,d)=1, it is called a reduced proper fraction.
If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get:
1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
It can be seen that there are 3 fractions between 1/3 and 1/2.
How many fractions lie between 1/3 and 1/2 in the sorted set of reduced proper fractions for d ≤ 12,000?
As I have solved problem 71, this problem is very simple. Just narrow down the n to satisfy n/d in (1/3, 1/2), and count it if hcf(n,d) = 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include<iostream> #include<cmath> using namespace std; const int N = 12000; int hcf(int n, int d); int main() { double min = (double) 1/3; double max = (double) 1/2; int cnt = 0; for (int d=3; d <= N; d++ ) { int left = d * min + 1; int right = d * max; if ( (double) right/d == max) right -= 1; if ( right < left) continue; for (int n=left; n <= right; n++) { if (hcf(n, d) == 1) cnt++; } } cout << "Answers to PE 73: " << cnt << endl; } int hcf(int n, int d) { int m = d % n; if (m == 0) return n; if (m == 1) return 1; while(m != 0) { d = n; n = m; m = d % n; } return n; } |
Answers to PE 73: 7295372 user system elapsed 1.197 0.002 1.198