我们是两个质数,我们的和小于2小于1000的最大质数两位数

简而言之:一个数字的最大素数昰3由于只有168个数字,我们可以详尽地描述两个素数的组合或者默认为3.通过使用一些额外的属性,我们可以很容易地找到最小数量的元素甚至可以构建这些数字的集合。

如果我们假设我们可以访问高达1000的素数列表我们可以解决这个问题,其中有168个

鉴于该数字是素数,显然答案是1

对于非素数,我们必须找到不同的方法来解决问题

每个大于2的偶数整数可以表示为两个素数之和

这个猜想一般都没有嘚到证实但至少知道要保持所有数字高达4×10 18。

因此这意味着,n = 2答案是1并且对于偶数 n > 2,答案是2(因为只有一个偶数素数)

如果数字昰奇数和非素数,我们知道素数的最大数量是3实际上,因为如果我们3从该数字中减去我们得到一个偶数,它可以由2三个元素组成显嘫这被称为:

每个大于5的整数都可以写成三个素数的总和。

我们可以改善上限的唯一方法是找到两个总和达到给定数字的素数因此,这需要迭代所有素数(最多至1000)并检查是否n-p也是素数。然而正如所说,我们可以减去2因为这是唯一一个会产生奇数的偶数,因此是候選者

总而言之,基本上有以下几种情况:

  1. 因为n <2没有素数,所以显然失败了;
  2. 对于n素数答案当然是一个,因为我们可以简单地使用这个數字;
  3. 对于大于2的偶数我们可以使用Goldbach的猜想,因此返回2我们知道这是最小的,因为除了2没有偶数素数;
  4. 对于大于2的奇数,我们知道如果n-2昰素数那么数是2,因为2是素数并且n-2是素数,我们知道没有更好的解因为n不是素数; 最后
  5. 对于奇数,其中n-2不是素数我们知道n-3偶数,並且根据Goldbach的猜想我们可以构造三个素数的和。我们知道这是最优的因为没有其他素数比2减法是偶数,因此我们可以再次使用哥德巴赫嘚猜想

因此,我们可以实现如下算法:


  

我们可以使用相同的方法来生成素数例如:

我们可以通过在迭代器大于的时刻切断线性搜索来提高效率n,但这通常不会产生那么大的差异因为素数小于1000的数量非常小。

由于n上限为1000所以没有大哦。此外如果n无限制,我们不知道猜想是否仍然存在

如果我们假设猜想成立,那么生成元组是在O(g×c)中完成的其中g是生成所有素数到n的时间,c是检查数是否是素数的時间

如果我们在Python中对上述非常有效实现的方法进行基准测试,我们将实现以下基准:

因此这意味着如果我们为所有数字高达1000的数量构建10'000次,则在Intel(R)Core(TM)i7-7500U CPU @ 2.70GHz上以4.08秒完成这意味着我们可以检查408.1μs的整个范围,或大约0.408μs的随机数

文档格式:PDF| 浏览次数:4| 上传日期: 04:06:24| 文档星级:?????

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

确认一键查看最优答案

本功能為VIP专享,开通VIP获取答案速率将提升10倍哦!

//思路:先得到1000以内所有的素数存在一个数组a[]中,再用冒泡排序法从大到小排列,最后输出a[0]

求指教哪儿有错求大神改错,或者依题写一个新编程




你判断的时候有错误把修改了一下。从1000开始循环如果是素数就跳出循环,打印出這个数就行了

1000以内最大的素数,你从997 开始检查是不是素数如果不是就减一,如果是就是最大的素数了啊


 


你判断的时候有错误把修改叻一下。从1000开始循环如果是素数就跳出循环,打印出这个数就行了
匿名用户不能发表回复!

我要回帖

更多关于 小于1000的最大质数 的文章

 

随机推荐