【问题标题】:Check if a number is prime without sieve [closed]检查一个数字是否是没有筛子的素数[关闭]
【发布时间】:2014-12-13 07:55:29
【问题描述】:

所以我需要解决一个问题,找到验证以下内容的第 n 个数:它是两个连续素数的和,它给出一个整数平方根。我的问题是,eratosthenes 的筛子使用了太多的内存,而对素数的天真检查太慢了。有什么方法可以快速解决这个问题并且没有额外的记忆?我尝试使用费马定理,但结果速度较慢。

提前致谢。

【问题讨论】:

  • 这些数字有多大?检查素数的基本方法是trial division,这对于相对较快的机器上的小数字来说已经足够了。它可以通过 a) 奇数除数 b) 仅质数除数来优化。有关插图,请参阅 this answer

标签: c square-root primality-test


【解决方案1】:

您可以使用 Rabin-Miller 进行素性测试。它是概率性的,所以它只告诉你一个数字可能是素数,但你可以设置确定性的水平。它速度极快,内存要求低。

显然你只需要考虑偶数的平方,因为只有偶数可以是两个素数的和(一旦你超过了 2)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2016-05-24
    相关资源
    最近更新 更多