Ruby | 设计数学?

gal*_*gal 6 ruby math primes

情况:

  • 我正在编写一个解决素数的程序.我需要解决4x ^ 2 + y ^ 2 = n的问题,其中n是已知变量.
  • 是的,它必须是Ruby.
  • 我很乐意花很多时间在这个项目上.
  • 我最好是自己编写方程的求解算法,并将其作为该项目的一部分.

我真的很喜欢:

  • 如果有人能够为我提供指南,网站或歧义的链接,有关构建与解决代数方程有关的正式算法,或者向我提供信息,在读者看来它会帮助我完成任务.
  • 请不要建议我使用其他语言.如果在回答之前你接受我真的非常想要这样做,我也将不胜感激.该项目没有范围或时间限制,也不是为了盈利.这是为了我自己的教育.

注意:

  • 我并不是直接反对为Ruby实现和使用已经存在的数学库/模块/东西,但另一种方式对我来说更好.

结束评论:

问题是我知道如何手动/用计算器解决这些方程,但我不知道如何在代码中解决它们.

Jon*_*röm 2

由于您似乎正在尝试实现阿特金筛,那么您可能也意识到 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
Run Code Online (Sandbox Code Playgroud)