当前位置: 首页 > 知识库问答 >
问题:

求与给定值相加的最小素数

华凌
2023-03-14

我想找到一组素数的最小集合,它可以和一个给定的值,例如9=7+2(而不是3+3+3)。

我已经使用eratosthens筛生成了一个数组素数

我正在按降序遍历数组,以获得数组中小于或等于给定数的最大素数。如果数字是奇数,这很有效。但对于偶数(例如122=113+7+2,但122=109+13)则失败。

共有1个答案

公羊子真
2023-03-14

虽然你的问题没有这么说,但我假设你在寻找基数最小的素数集合。

若n为偶数,则考虑素数p的顺序:2,3,5,…;最终n-p将是素数,所以n是两个素数的和。这个过程通常收敛得很快,两个素数中较小的一个很少大于1000(通常比1000小得多)。

如果n是奇数,n-2是素数,那么n是素数2和n-2的和。

 类似资料:
  • 我的问题很简单,但我不知道如何解决我想要的。我必须找到小于给定数字的最大数素数,如果不存在则打印消息。 代码是有效的,如果数字是10,它会打印7,但我想做2个新的修改,我找不到解决方案。例如,如果给定的数字是1,我的程序应该如何修改以打印消息?我试着写一个if-else,但是如果我用if修改了while,这将不会有帮助。第二件事,如果给定的数是素数,代码仍然会找到比给定数少的数。如果我给数字7,输

  • 本节通过求数组的最大和最小值来提高初学者对数组的一些基本应用。 程序运行结果如下: 最高成绩:100 最低成绩:67 将变量 min 与 max 初值设成数组的第 1 个元素后,再逐一与数组中的各元素相比。比 min 小,就将该元索的值指定给 min 存放,使 min 的内容保持最小。同样,当该元素比 max 大时,就将该元素的值指定给 max 存放,使 max 的内容保持最大。for 循环执行完

  • 所以,我有一个所有正自然数的数组。给我一个阈值。我必须找出总和小于给定阈值的数字(连续的)的最大计数。 输入数组的最大大小可以为 10^5。 基本上,我想到了一种算法,它计算原始数组的子集中元素的数量,这些元素的总和将小于给定的阈值。但是,这将导致O(N^2).的复杂性有人能建议一个更好的算法吗?我不是在寻找一个代码,只有一个算法/伪代码将做得很好。谢谢!

  • 正整数的二进制权重是其二进制表示中1的个数。例如,十进制数1的二进制权重为1,十进制数7(二进制为111)的二进制权重为3。 给定一个正整数N,找出与N具有相同二进制权重的大于N的最小整数。 我的解决方案运行良好,但它的复杂性似乎是O(NlogN)。这可以通过其他方法在O(N)或O(logn)中实现吗?

  • 我试图解决类似于这个问题,但有一些修改: “给定一个值V,如果我们想换V美分,并且我们有无限量的C={C1,C2,…,Cm}值硬币,那么换硬币的最小数量是多少?” 输入:硬币[]={25,10,5},V=30 输出:至少需要2个硬币 我们可以用一枚25美分的硬币和一枚5美分的硬币 在我的例子中,我有一个对象数组,而不仅仅是一个数字数组。每件物品都有数量和价格。我想打印构成给定数量的最小数量的对象,

  • 给出加权无向图G(v,e)的权值为w(e),求出使每对顶点(u,v)∈G连通(简言之为)且所选边的权值范围最小(或最小权值与最大权值之差最小)的边集。 我尝试了贪婪的方法,根据权重对边进行排序,然后在排序的数组中选择连续边之间权重差最小的两条边(G[index=current_left],G[index+1=current_right]),然后根据(current_left,current_lef