About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
December 2023 - Solution
December 2023 Solution:
The solutions are 4310930, 4311298, 4312919, 4313134, 4313718
A very nice solution was given by Karl Mahlburg:
This was an exercise in Eisenstein integers. In particular, the desired radii are exactly those (rational) integers that occur as the norm N(z) of an Eisenstein integer z = a + b\omega. So f(n) counts the integers m \in (n^2, (n+1)^2) that can be realized as m = N(z).
It is known (or straightforward) that N(z) = ((2a-b)^2 + 3b^2) / 4. Therefore, a reasonably efficient approach to the problem is to generate and count the set of all sums of the form (x^2 + 3y^2)/4, where x and y have the same parity, looping through all y, and then restricting x so that the final sum will lie in (n^2, (n+1)^2). With some basic cython optimization, calculating f(4000000) takes about 10s.
I found some further benefits from "parallelization": by calculating the set E as all sums in the range (n^2, (n+k)^2), and then counting the norms in the individual ranges ((n+j)^2, (n+j+1)^2) using sorted search. Batches in the range k=100 got the average time down to 2s per each f(n).
By cubic reciprocity, there is an alternative characterization of the desired m = N(z), namely, all m such that the power of p is even for any prime divisor p = 2 (mod 3). But factorization is still far too slow to use this at the scale needed for this problem.