@@ -0,0 +1,1306 @@
+import java.util.*;%0Aimport java.util.stream.Collectors;%0Aimport java.util.stream.IntStream;%0Aimport java.util.stream.LongStream;%0A%0A@SuppressWarnings(%22unused%22)%0Apublic class P073 implements Puzzle %7B%0A%0A%0A%0A    @Override%0A    public String solve() %7B%0A        final BitSet primesBits = Util.primesBits(12_000);%0A%0A        final Map%3CInteger, Set%3CInteger%3E%3E factors = IntStream.range(1, 12_001)%0A                .boxed()%0A                .collect(Collectors.toMap(i -%3E i,%0A                                          i -%3E Util.uniqueFactors(i, primesBits).mapToInt(integer -%3E (int) integer).boxed().collect(Collectors.toSet())));%0A%0A        return %22%22 + IntStream.range(2, 12_001)%0A                .parallel()%0A                .map(denominator -%3E%0A                %7B%0A                    int count = 0;%0A                    for (int numerator = denominator / 3 + 1; numerator %3C (denominator - 1) / 2 + 1; ++numerator) %7B%0A                        double result = 1.0 * numerator / denominator;%0A                        if (result %3E 1.0 / 3.0 && result %3C 1.0 / 2.0 &&%0A                                Collections.disjoint(factors.get(numerator), factors.get(denominator))) %7B%0A                            ++count;%0A                        %7D%0A                    %7D%0A                    return count;%0A                %7D)%0A                .sum();%0A    %7D%0A%7D

add 73