情况:
我真正喜欢的是什么:
注意:
结束评论:
问题是我知道如何用手/计算器解决这些方程,但我不知道如何在代码中解决它们。
答案 0 :(得分:2)
我想你正在实施阿特金筛选。在这种情况下,您实际上并没有求解等式。查看original paper的实际算法。
答案 1 :(得分:2)
由于您似乎正在尝试实现Sieve of Atkin,因此您可能也意识到4x ^ 2 + y ^ 2 = n只是三个方程式中的第一个。我不想破坏你的乐趣,因此下面只是实现那个。如果你遇到困难,只需评论这个答案,我会回复你。
max = 100
primes = Array.new(max + 1) { false }
sqrt = Math.sqrt(max)
1.upto(sqrt) do |x|
1.upto(sqrt) do |y|
n = 4 * x**2 + y**2
primes[n] ^= true if n <= max && (n % 12 == 1 || n % 12 == 5)
end
end