验证哥德巴赫猜想(好难啊,感觉自己写的有点啰嗦,求大神指点!!!)
【问题描述】编写程序验证哥德巴赫猜想: 一个不小于6的偶数可以表示为两个素数之和,如6=3+3, 8=3+5, 10=3+7,…
要求:
(1)子函数prime函数,prime函数的作用是判别一个数是否为素数,返回一个整数(0表示非素数,1表示素数)
(2)子函数gotbaha函数,调用prime函数,输出该数的所有素数和对
(3)在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha。
样例输入:
104
样例输出:
104=3+101
104=7+97
104=31+73
104=37+67
104=43+61
要求:
(1)子函数prime函数,prime函数的作用是判别一个数是否为素数,返回一个整数(0表示非素数,1表示素数)
(2)子函数gotbaha函数,调用prime函数,输出该数的所有素数和对
(3)在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha。
样例输入:
104
样例输出:
104=3+101
104=7+97
104=31+73
104=37+67
104=43+61
测试输入:
18
测试输出:
18=5+13
18=7+11
18
测试输出:
18=5+13
18=7+11
测试输入:
22
测试输出:
22=3+19
22=5+17
22=11+11
22
测试输出:
22=3+19
22=5+17
22=11+11
#include <iostream>
#include <cmath>
using namespace std;
int main() {
void godbaha(int);
int n;
cin>>n;
godbaha(n);
return 0;
}
void godbaha(int n) {
int prime(int );
int a=n;
int j=0;
int c=0;
for(j=2; j<=a/2; j++) {
c=a-j;
if(prime(c)==0)
continue;
if(prime(c)==1) {
if(prime(j)==1) {
cout<<a<<"="<<j<<"+"<<c;
cout<<endl;
}
}
}
}
int prime(int m) {
int q=m;
int i=0;
for(i=2; i<=sqrt(q); i++) {
if(q%i==0) {
return 0;
break;
} else
continue;
}
if((i<=sqrt(q)+1)&&(i>=(sqrt(q)-1)))
return 1;
return 0;
}