![]() |
1
2
这与@RalphMRickenback所描述的相似,但具有更严格的复杂性界限。 他描述的主要查找算法是 sieve of Erathostenes ,它需要空间O(n),但具有时间复杂性O(n log log n),如果你想对此更加小心,你可能想看看维基百科上的讨论。
找到一个比
编辑
正如评论中提到的,素数扫描的时间复杂度优于线性
这里是Python中的完整实现,而不是伪代码:
在您的示例中,这将产生:
|
![]() |
2
2
另一次暴力尝试:
如果有足够的内存可用(N/2位),可以制作一个这样大小的位数组。用除第一个位置以外的所有TRUE初始化它。在位数组上迭代,计算所处位置的倍数,并将所有倍数设置为假。如果下一个位置已经为假,则不需要重新计算其所有倍数,它们已经设置为假。 因此,找到所有素数是<O(N ^2)。
步骤2)是<O(n ^2)以及:
我想这可以进一步优化。你可以保持(i,j)来知道这两个素数。 |
|
Jay · JavaScript中的乘法表-2个表 6 年前 |
![]() |
Ryan · 使用16位DSP的33*33位 6 年前 |
![]() |
Fizi · 熊猫groupby:获取每个群体的产品价值 6 年前 |
![]() |
user2079550 · 如何快速执行类似于乘法的矩阵运算? 7 年前 |
|
Micael Salomon · 根据特定列的值乘以值 7 年前 |
![]() |
John · 在Java中,如何将两个一维数组的对应值相乘? 7 年前 |
![]() |
Michael26 · 乘法公式字符串-java 7 年前 |
![]() |
Serge Kashlik · 如何在SQL中计算并添加新列 7 年前 |