【发布时间】:2019-06-25 10:50:44
【问题描述】:
一个月以来,我一直在阅读一本具有竞争力的编程书籍。这本书是由我国(孟加拉国)的世界决赛选手之一撰写的。需要指出的是,这本书是用我们的母语(孟加拉语)写的,在世界范围内并不那么受欢迎。因为有孟加拉语的内容,我不能在这里引用它。这就是为什么我首先感到抱歉。
在那本书的数论章节中,给出了许多算法来测试素数。他展示的最优化的是 O(nloglogn) 中的“Eratosthenes 筛”。但他写了一行。我正在翻译它。 “有一种在 O(logn) 中测试素数的更有效方法。你自己想一想。如果你失败了,就用谷歌搜索吧!!”
我用谷歌搜索过。但我没有找到任何令人满意的东西。
真的可以在 O(logn) 中测试一个数字的素数吗? 如果可能,那么可以得出什么范围??
【问题讨论】:
-
他可能的意思是,一旦预先计算了筛子,您就可以在 O(logn) 中测试素数。该方法已讨论here。
-
你给出的不是素数测试,而是素数分解。 @VishnuDasu
-
您可以轻松修改代码以确定数字是否为质数。一种简单的方法是只计算因子的数量。复杂度仍然是 O(logn)。 @KaziZiaulHassan
标签: algorithm data-structures number-theory primality-test