haskell - 二次筛和n次方

标签 haskell quadratic sieve

我根据维基百科页面上指定的基本算法在 Haskell 中实现了二次筛选。它对大多数整数都很有效,但是它无法找到 n 次幂的数字 N 的因式分解。对于偶次幂(平方),算法循环,对于奇次幂,我找到了几个平方模 N 的平滑数(我已经测试并确认了这一点),但是每个导出的平方同余(也测试并确认)仅导致一个微不足道的因素。

我有理由确信我严格执行了维基百科算法。该版本的算法是否存在问题,导致其无法处理n次幂,或者我的算法是否存在错误?

由于某种原因,stackoverflow 在格式化我的代码时遇到问题,所以这里是:http://pastebin.com/miUxHKCh

最佳答案

据我了解,二次筛并不是设计用于确定对数字进行因式分解。相反,在典型情况下,它的设计目的是通常对一个数字进行因式分解。

例如,至少在今天,维基百科条目将其描述为“没有对数优化或素数幂的标准二次筛”。因此它明确不考虑素数幂。

此外,据我了解,对接近素数幂的数字进行因式分解在更有效的算法变体中也不能很好地工作。

所以问题不在于你的代码,而在于算法通常呈现的方式(这掩盖了诸如它是否总是有效或只是通常等问题作品等:-))

关于haskell - 二次筛和n次方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759820/

相关文章:

haskell - 什么是 Levity 多态性

r - 多项式回归: Why do you need to define polynomial terms outside of lm() to avoid singularities?

arrays - 埃拉托色尼筛法

haskell - 当类型包含自身时该怎么办?

haskell - Haskell 中的约束值类型

java - 可因式分解的三项式/多项式

C# 应用求解二次虚根

c - 埃拉托色尼筛法

c++ - 寻找合数

haskell - 为类型同义词编写仿函数实例并感到困惑