我根据维基百科页面上指定的基本算法在Haskell中实现了二次筛。它在大多数整数上都很有效,但是它没有找到对数量N的因子分解 n 次幂。对于偶数幂(正方形),算法循环,对于奇数幂,我找到几个平方数为N的正方形(我已经测试并证实了这一点),但是每个方形的广义同形(也经过测试和确认)仅导致一个微不足道的因素。
我有理由相信我在这封信中实施了维基百科算法。该版本的算法是否存在问题,导致其无法处理 n 次幂,或者算法中是否存在错误?
由于某种原因,stackoverflow在格式化我的代码时出现问题,所以请转到:http://pastebin.com/miUxHKCh
答案 0 :(得分:2)
根据我的理解,二次筛是不设计为肯定因数。相反,在典型情况下,它被设计为通常因数。
维基百科条目,例如,至少截至今天,描述了它所呈现的“没有对数优化或主要权力的标准二次筛子”。所以它明确地没有考虑主要权力。此外,据我了解,将数字 close 分解为素数也不能更有效地改变算法。
因此,错误不在您的代码中,而是通常会呈现算法(这会掩盖诸如始终是否有效或仅通常等问题作品等: - ))