c++ - 找到质数的最佳方法是什么?

标签 c++

<分区>

找到质数的最佳方法是什么,以便大大降低时间复杂度。

最佳答案

在寻找素数时,Sieve of EratosthenesSieve of Atkin是两种可能的解决方案。 Eratosthenes 筛法的复杂度为 O((n log n)(log log n))。阿特金筛的复杂度为 O(N/log log n)。

如果你有一个数字,你想知道它是否是质数,这称为执行 primality test .天真的方法是检查从 2 到 sqrt(n) 的所有数字 m 并验证 n % m 不为 0。如果你想稍微扩展一下,你可以扔掉所有偶数(2 除外)。对于这种朴素的方法还有一些其他的改进,可能会提高性能,以及其他更高级的技术。

关于c++ - 找到质数的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428786/

相关文章:

c++ - 以随机可再现顺序生成非重复字节的快速方法

c++ - 使用指针指向字符串中的某些字符

c++ - 我应该用 'if' 语句统一两个相似的内核,冒着性能损失的风险吗?

c++ - ASSEMBLY 偏移到 C++ 代码问题

C++ LibVLC 可以用吗?

c++ - 使用数组指针索引数组

c++ - 类型到值元函数可以用作 C++14 中的变量别名吗?

c++ - 从具有重复键的多映射中仅删除一个元素

c++ - 模板的总类特化

c++ - 介于 multimap 和 vector 之间的数据结构