简单快速的Random Prime发电机?

时间:2013-03-28 00:45:47

标签: random generator primes

我知道有许多主要的发电机,例如Eratosthenes或Atkin的筛子。 但它们从小的开始顺序生成数字。 我可以使用什么方法来获取间隔中的素数而不从较小的东西开始?

一个选项可能是使用随机数生成器并使用素性测试,确定性或概率测试输出,具体取决于我想要实现的目标。无论如何,测试将是缓慢而复杂的。

是否有任何快速简便的方法可以连续生成素数? 假冒生成器也可以。

问候


我更清楚地重写了这个问题:

如何在给定的时间间隔内生成素数而不: - 顺序从小尺寸到最大尺寸(与Erathostenes筛网一样) - 也不对随机序列使用慢速概率素性测试?

是否有任何FAST和EASY算法或函数以这样的方式生成数字:如果您长时间运行它,您将获得一段时间内的所有素数? (我不介意它是否也会产生一些复合材料)。

1 个答案:

答案 0 :(得分:0)

如果间隔不是太大而且间隔的低端不是太高,则可以使用分段的Eratosthenes筛; “太大”和“太高”的定义取决于你的愿望和耐心,但任何大于10 ^ 15的东西都不太可能成功。否则你可以在所需的时间间隔内选择一个随机的奇数,测试它的素数,如果它是素数则保留它或者尝试下一个更大的奇数,继续直到找到素数;如果你希望通过使用素轮产生候选素数而不是仅测试下一个奇数,你可以加快速度。没有第三种选择。

你已经说过,如果这个数字是复合的,你就不要太在意。在这种情况下,你可以生成一个随机的奇数,测试它只是为了强基数为2并且没有其他基数,并且如果测试表明它是素数则保留它或者如果测试表明它是下一个奇数则再次尝试综合。这不是一个完美的素性测试,但它比用于Miller-Rabin测试的25个随机碱基测试更快,并且比Lucas pseudoprime测试更快,并且可能足够用于您的目的。

您可以通过在Stack Overflow上搜索或查看my blog来查找所有这些内容的说明,或者您可以在此处询问是否还有其他具体问题。