C 或 C++:用于分解整数的库?
Posted
技术标签:
【中文标题】C 或 C++:用于分解整数的库?【英文标题】:C or C++: Libraries for factoring integers? 【发布时间】:2009-05-24 11:13:49 【问题描述】:似乎有几种非常快速的素数分解算法(看起来很理想的一种是二次筛选)。但是,为了简单起见,我不想自己(可能很糟糕)实现,而是使用现成的库。
我需要能够有效地分解最多 15 位的整数。正因为如此,我不是在寻找必然渐进最佳缩放的算法,因为我们可以假设被分解的数字小于 1015。
我已经看过Wikipedia's Quadratic Sieve page 中列出的一些实现。然而,一些实现似乎并没有得到很好的维护。有些没有文件;等等!我检查了一些著名的库,例如 Boost,是否有分解方法,但它们似乎没有。
谁能推荐一个符合上述条件的库?
【问题讨论】:
“要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。” 【参考方案1】:查看 Jason Papadopoulos 的 MSIEVE 库以分解大整数。
Msieve 是我努力理解和优化如何实现的结果 使用最强大的现代算法对整数进行因式分解。
本文档对应于 Msieve 库的 1.46 版。 不要期望仅仅通过阅读它就能成为保理专家。我有 包括一个相对完整的参考列表,你可以和 如果您想将代码视为不仅仅是一个黑盒子,应该查找 来解决您的保理问题。
【讨论】:
再一次,我找不到任何关于它的真实文档。我不确定它将如何与我的程序集成,因此,它是否会起作用! 好吧,我说过你可以... :) 我也对因式分解感兴趣。因式分解是一个难题,可能很难找到文档化且快速的库。 我同意;尤其是在项目文档和速度几乎互斥的情况下。 ;) 链接论坛:mersenneforum.org/forumdisplay.php?f=19 似乎很活跃 - 我建议在那里寻求帮助,也许可以回到这个帖子。 好的,我已经问过了...一个模组显然需要检查我的第一篇文章,所以我会在没问题后发布链接。【参考方案2】:GMP-ECM怎么样?
【讨论】:
我找不到任何文档(其“文档”部分为空)。它的名字似乎也暗示它使用 GMP 来存储整数。我更喜欢使用 64 位整数(因为我在 64 位计算机上运行)。 您是否检查了源代码分发中的 readme.lib 文件?它不是最详细的文档,但它解释了它是如何工作的。 (但是,它确实使用 gmp,而不是 64 位整数)。 链接在 2021 年被破坏。这是不鼓励链接作为答案背后的基本原理的经典示例。以上是关于C 或 C++:用于分解整数的库?的主要内容,如果未能解决你的问题,请参考以下文章