Problem 72
Counting fractions
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 21 elements in this set.
How many elements would be contained in the set of reduced proper fractions for d ≤ 1,000,000?
分数计数
考虑形如n/d的分数,其中n和d均为正整数。如果n < d且其最大公约数为1,则该分数称为最简真分数。
如果我们将d ≤ 8的最简真分数构成的集合按大小升序列出,我们得到:
可以看出该集合中共有21个元素。
d ≤ 1,000,000的最简真分数构成的集合中共有多少个元素?
package projecteuler;
import junit.framework.TestCase;
public class Prj72 extends TestCase {
public static int MAX = 1000000 + 1;
static int[] euler = new int[MAX];
static {
euler[1] = 1;
for (int i = 2; i < MAX; i++) {
euler[i] = i;
}
for (int i = 2; i < MAX; i++) {
if (euler[i] == i) {
for (int j = i; j < MAX; j += i) {
euler[j] = euler[j] / i * (i - 1);
}
}
}
}
public void testCountingFractions() {
long val = 0;
for (int i = 1; i < MAX; i++) {
val += euler[i];
}
val -= 1;
System.out.println(val);
}
}