【发布时间】:2014-11-23 10:52:07
【问题描述】:
我正在努力了解如何在多时间 J 中生成 J 个最小素数的列表,基于 p'j 小于或等于 2j * ln(j) for j > 2 的事实,其中 j 表示第 j 个连续素数。例如,对于 j=1,p1 = 2,对于 j = 2,p2 = 3。对于 j = 3,p3 = 5,对于 j = 4,p4 = 7,对于 j = 5,p5 = 11,等等......
我只是不明白如何利用上面的这个事实。任何时候我想生成一个素数,比如第 7 个,我会通过插入来检查:2(7)*ln(7) = 27.2427... 但事实证明这是完全没用的。这个数字比我数组中最后一个生成的素数大得多,这是合乎逻辑的。因此,我仍然必须通过使用数组中的每个素数检查 mod0 的最后一个素数 +1 来诉诸暴力。另一种选择是诉诸现有的算法,将时间减少到多项式时间。
你能告诉我如何利用这个事实:p'j
【问题讨论】:
-
p'j 小于等于 2j * ln(j)?你确定吗?
-
绝对 100% 肯定!好吧,我要补充一点,这是为了足够大的 j。但几乎任何高于 2 的东西都有效。
-
能否给个链接,我不明白
-
我没有链接。那是教科书上的。我刚刚编辑了 qn 以计算 j 必须大于 2 的小修改。
-
根据wikipedia,
p_j < j*ln(j) + j*ln(ln(j)),小于2j*ln(j)。
标签: algorithm primes prime-factoring