是否可以在 O(logn) 中测试一个数是否为素数?

Is it possible to test whether a number is prime or not in O(logn)?

我已经阅读了一个月的竞争性编程书籍。这本书是由我国(孟加拉国)的世界决赛入围者之一撰写的。需要注意的是,这本书是用我们的母语(孟加拉语)写的,在世界范围内并不那么流行。由于有孟加拉语的内容,我不能在这里引用它。这就是为什么我首先感到抱歉。

在那本书的数论章节中,给出了很多算法来测试素数。他展示的最优化是 O(nloglogn) 中的 "Sieve of Eratosthenes"。但是他写了一行。我正在翻译它。 "There is a more efficient method of testing primality in O(logn). Think it yourself. And if you are undone, just google it!!"

我用谷歌搜索了 it.But 我没有找到任何令人满意的东西。

真的可以在 O(logn) 中测试一个数的素数吗?? 如果可能的话,那么可以得出结论的范围是什么??

该说法不正确。对于数字 N,位数为 O(log N),因此该语句意味着存在一种算法,其位数为 线性 。最著名的结果是位数的多项式。 (Agrawal–Kayal–Saxena 素性检验,Õ(logN 12)。这是 logN 的十二次方,而不是一。

仍然,Õ(logN 12) ⊂ O(N)