首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到一个质数和的数字?

如何找到一个质数和的数字?
EN

Stack Overflow用户
提问于 2013-02-06 11:17:49
回答 5查看 27.8K关注 0票数 4

让我们看看,我们想要找到1到1000之间的所有数字,它们被表示为两个质数的和。例如8= 3+5,24 = 13+11

现在,这可以在O(n^2)中通过迭代1到1000之间的质数列表来完成。

有没有办法在O(n^2).Is以内做同样的事情?有没有一种方法可以在线性时间内做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-06 11:41:22

创建一个包含1000个布尔值的数组p。如果i是质数,则将p[i]设置为true,否则设置为false

然后,O(N^2)算法就变得简单了:在外部循环中遍历数字k 1到1,000,然后在内部循环中遍历所有大于k的素数x,并检查是否存在一个素数使得p[k-x]true

代码语言:javascript
复制
for k in 1..1000
    for x in primes greater than k
        if (p[x-k])
            print k can be represented as x plus (x-k)
            break

我怀疑对于1000个数字because computer-aided verification currently proceeds at a rather slow speedsO(N)的总运行时间,可以在恒定的时间内执行检查。

票数 2
EN

Stack Overflow用户

发布于 2013-02-06 11:28:32

对于我们现在知道的所有偶数,它们可以表示为2个质数的和(参见Goldbach's conjecture)。

对于所有的奇数,如果它可以表示为2个素数的和,那么其中一个一定是2,另一个应该是奇素数。

所以总数应该是(1000/2 - 1) +(素数计数从3到997),

其中,

(1000/2 - 1)是系列4、6、8、10的总数...

(质数从3到997)是系列5(2+3)、7(2+5)、9(2+7)、13(2+11)的总数...

票数 8
EN

Stack Overflow用户

发布于 2017-04-14 08:57:44

1!1是一个很好的公式。第一个是1000 +1除以5x + 38。这是根据ATF定理。试试这个,你就会得到答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14720904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档