Problem 73
Counting fractions in a range
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:
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?
分数有范围计数
考虑形如n/d的分数,其中n和d均为正整数。如果n < d且其最大公约数为1,则该分数称为最简真分数。
如果我们将d ≤ 8的最简真分数构成的集合按大小升序列出,我们得到:
可以看出在1/3和1/2之间有3个分数。
将d ≤ 12,000的最简真分数构成的集合排序后,在1/3和1/2之间有多少个分数?
package projecteuler;
import junit.framework.TestCase;
public class Prj73 extends TestCase {
private static final int UP_LIMIT = 12000;
public void testCountingFractionsInARange(){
System.out.println(between(1, 3, 1, 2, UP_LIMIT));
}
int between(int n1, int d1, int n2, int d2, int limit) {
if (d1 + d2 > limit) {
return 0;
}
return 1 + between(n1 + n2, d1 + d2, n2, d2, limit)
+ between(n1, d1, n1 + n2, d1 + d2, limit);
}
}