哥德巴赫猜想这道题求解!!

有没有谁知道验证哥德巴赫猜想这道题我的代码哪里错了;52以上就不输出了!

题目描述

验证哥德巴赫猜想:每一个大于2的偶数都可以表示成两个质数之和。输入偶数N(N>=4),N的一个表示式子。

4=2+2

6=3+3

8=3+5

10=3+7

12=5+7

样例输入:

4

样例输出:

4=2+2 

时间限制:

1000

空间限制:

65536

提示:

要求:输出式子第一个质数最小的情况,并请将式子中两个数较小的一个放在前面。
我的代码:
#include
#include
#include
#include
#include
using namespace std;

int main(){
int n;
cin>>n;
int swag=0,flag=0;
if(n==4){
cout<<“4=2+2”;
return 0;
}
else{
for(int i=3;i<n;i++){
for(int j=2;j<i;j++){
if(i%j==0){
swag=1;
}
}
if(swag==0){
int tab=n-i;
for(int p=2;p<tab;p++){
if(tab%p==0){
flag=1;
}
}
if(flag!=1){
cout<<n<<“=”<<i<<“+”<<tab;
return 0;
}
}
}
}
return 0;
}

高于52当然不输出,swag等于一

你为什么要写swag呢
你就不能写个函数判断是否是质数

会被举报
快删了

删帖

和你题目不一样

只是思路

谁家好人思路精细到头文件啊

删了还能看到

题目只是类似的

函数判断质数核心代码

bool hs(int x){
	for(int i=1;i<=sqrt(x);i++){
		if(x%i==0&&i!=x){
			return 0;
		}
	}
	return 1;
}
  1. 验证哥德巴赫猜想(简单版)

题目详情

测评详情

哥德巴赫猜想:即任一大于2的偶数都可写成两个质数之和。
例如18可以写成5+13或者7+11。
输入一个正整数n(2~1000000),请问n可以写成多少种不同两个质数相加的结果?

输入格式:

一个正整数n

输出格式:

一个整数,为n可以写成多少种不同两个质数相加的结果

样例 1 :

输入:
18

输出:
2

样例 2 :

输入:
88

输出:
4

说明:
1:88=5+83 2:88=17+71 3:88=29+59 4:88=41+47

提 交

格式化代码

认为还不错给个解决方案吧求求了

题目都不一样

1 个赞

《在此键入或粘贴代码》

谢谢各位大神!!

:anger: :anger: :anger: :anger: 没归0的问题

我当时还没学函数,现在看懂了 :sob: :sob: :sob: :sob: :sob: :sob:

老帖就不用回复了

:grinning: :grinning: :grinning: :grinning: :grinning: :grinning:

1 个赞