2009-05-24 15 views
5

本当に素数の素因数分解アルゴリズムがいくつかあります(理想的に見えるのは、2次ふるいです)。しかし、私自身の(貧しいと思われる)実装を作るのではなく、簡単のために既成のライブラリを使いたいと思います。CまたはC++:整数を因数分解するためのライブラリ?

私は15桁までの整数を効率的に分解できる必要があります。そのため、私は、因数分解される数が10 未満であると仮定することができるので、必ず漸近的に最良になるアルゴリズムを探しているわけではありません。

Wikipedia's Quadratic Sieve pageに掲載されている実装の一部を既に見てきました。しかし、実装のいくつかはよく維持されていないようです。いくつかはドキュメンテーションを持っていません。等々! Boostのようないくつかのよく知られているライブラリが分解法を持っていたかどうかを確認しましたが、そうではないようです。

誰でも上記の基準に適合するライブラリをお勧めしますか?

+0

"本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推薦するかどうかを尋ねる質問は、オピニオン回答とスパムを引き付ける傾向があるため、スタックオーバーフローに関するトピックではありません。それを解決するために今まで何が行われているのか」 – genpfault

+1

@genpfault OPのアカウントは削除されました...この質問は8歳です。 – qxz

答えて

1

Jason Papadopoulosによって大きな整数を分解するライブラリMSIEVEをご覧ください。

Msieveは、最も強力な最新のアルゴリズムを使用して の整数をどのように分解するかを理解し最適化した結果です。

このドキュメントは、Msieveライブラリのバージョン1.46に対応しています。 ファクタリングの専門家になることは、それを読むだけではありません。私は にはあなたができることの比較的完全なリストが含まれていて、 は、あなたの因果関係の問題を解決するためにコードをブラックボックス以上のものとして扱いたいのであれば見上げるべきです。

+0

もう一度、実際のドキュメントは見つかりません。私はそれが私のプログラムとどのように統合されるのか、それがうまくいくかどうかはわかりません! –

+1

まあ、私はあなたが言ったかもしれない:...私も分解に興味がある。ファクタライゼーションは難しい問題です。おそらく、文書化された*高速*ライブラリを見つけるのは難しいでしょう。 –

+0

私は同意します。特に、プロジェクトの文書化とスピードの相互排他性がほとんどである。 ;) –

-1

GMP-ECM

+0

その文書を見つけることができません(その「文書」セクションは空です)。その名前はまた、GMPを使って整数を格納することを示唆しているようです。私は64ビット整数を使うことを好むだろう(私は64ビットコンピュータ上で走るので)。 –

+0

ソース配布物のreadme.libファイルを確認しましたか?最も詳細なドキュメントではありませんが、どのように動作するかについて説明しています。 (ただし、64ビット整数ではなくgmpを使用します)。 – Soroosh