6

状況:

  • 私は素数を解くためのプログラムを書いています。4x ^ 2 + y ^ 2 = nのチューニングで問題を解決する必要があります。ここで、nは既知の変数です。
  • はい、Rubyである必要があります。
  • 私はこのプロジェクトに多くの時間を費やすことに満足しています。
  • できれば、方程式の解法アルゴリズムを自分で作成して、このプロジェクトの一部として組み込みたいと思います。

私が本当に好きなもの:

  • 誰かが私にガイド、ウェブサイトへのリンク、または代数方程式の解法に特に関連する正式なアルゴリズムの構築に関する曖昧さ回避を提供できるか、または読者に私の探求に役立つと思われる情報を提供してくれます。
  • 別の言語を使用することを提案しないでください。また、答える前に、私が本当に本当にやりたいと思っていることを認めていただければ幸いです。このプロジェクトには範囲や時間の制約はなく、営利目的ではありません。それは私自身の教育のためです。

ノート:

  • 私は、Ruby用にすでに存在する数学ライブラリ/モジュール/何かを実装して使用することに直接反対していませんが、他の方法が私よりも望ましいです。

閉会のコメント:

問題は、これらの方程式を手作業で/電卓を使って解く方法を知っていることですが、コードでそれらを解く方法がわかりません。

4

2 に答える 2

2

アトキンのふるいを実装しようとしているように見えるので、4x ^ 2 + y ^ 2=nが3つの方程式の最初のものにすぎないことにもおそらく気づいています。私はあなたの楽しみを台無しにしたくないので、以下はそれだけを実装しています。行き詰まった場合は、この回答にコメントしてください。折り返しご連絡いたします。

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
于 2012-05-08T21:23:25.080 に答える
2

あなたはアトキンのふるいを実装していると思います。その場合、実際には方程式を解くことはありません。実際のアルゴリズムについては、元の論文を参照してください。

于 2012-05-08T19:44:35.623 に答える