首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之
[问答题]
歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。 对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。 对于一个给定的整数,输出所有这种素数和分解式。 注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式 )。
添加笔记
求解答(0)
邀请回答
收藏(2)
分享
纠错
2个回答
添加回答
0
牛客563446938号
import java.util.Scanner;
public class a40 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
for(int i=2;i<=n/2;i++) {
for(int j=1;j<i;j++) {
if(i%j==0) {
if(j!=1) {
break;
}
}
if(j==i-1) {//j==i-1
int x=i;//x设定为第一个数
for(int z=n-x;z>n/2;z--) {//后面是从后往前来查找素数的
for(int c=1;c<z;c++) {
if(z%c==0) {
if(c!=1) {
break;
}
}
if(c==z-1) {
int h=z;//h为第二个数
if(x+h==n) {
System.out.println(x+"+"+h+"="+n);
}
}
}
}
}
}
}
sc.close();
}
}
发表于 2022-10-16 16:25:22
回复(0)
0
xiongyawe
public boolean prime(int n){
if(n<2) return false;
if(n==2) return true;
int len=(int)Math.sqrt(n)+1;
for(int i=2;i<=len;i++){
if(n%i==0){
return false;
}
}
return true;
}
public void solve(int n){
int[] a=new int[n];
int j=0;
for(int i=2;i<=n;i++){
if(prime(i)){
a[j++]=i;
}
}
int l=1<<j;
int k;
for(int f:a)
System.out.println(f);
for(int i=0;i<l;i++){
k=i;
int m=0;
int h=0;
String s="";
while(k>0){
if((k&1)>0){
m+=a[h];
if(s=="") {s=s+a[h];}
else s=s+"+"+a[h];
}
h++;
k>>=1;
}
if(m==n){
System.out.println(s);
}
}
}
发表于 2015-04-20 19:08:55
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
微软
穷举
上传者:
醉生梦死不自觉
难度:
2条回答
2收藏
6159浏览
热门推荐
相关试题
多少个点位于同一直线
穷举
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
测试工程师
golang工程师
评论
(317)
来自
牛客考试系统测试卷
编写实现链表排序的一种算法。说明为...
微软
链表
排序
评论
(2)
给出一个函数来输出一个字符串的所有排列。
微软
链表
穷举
组合数学
评论
(4)
某商品表products需添加'上...
SQL
评论
(1)
在Vue组件销毁时,关于清除定时器...
Vue
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题