题目
Description
验证弱哥德巴赫猜想
弱哥德巴赫猜想:任一大于7的奇数都可以写成三个奇质数之和。
奇质数:一个数既是奇数,又是质数(奇数中的质数、是质数的奇数)。
Input
一个正整数N,N是大于7的奇数。
Output
3个相加等于N的质数,若组合不唯一,则输出要求第一个质数最小, 若第一个质数相等的情况下,输出第二个质数最小的组合。
Sample
Input
9
Output
3+3+3
Code 代码
最简单的暴力枚举法。
#include<iostream>
using namespace std;
/*
* 判断质数
* 返回true,表示x是质数
*/
bool judge_prime(int x)
{
bool flag = true;
if (x == 2)
return flag;
for (int i = 2; i * i <= x; i++)
{
if (x % i == 0)
{
flag = false;
break;
}
}
return flag;
}
int main()
{
int N;
cin >> N;
/*if (N < 9)
return 0;*/
//两层循环枚举求解
for (int i = 2; i <= N / 2; i++)
{
if (i % 2 == 0)
continue;//i为偶数,则跳过此次循环,进入下一次循环
for (int j = 2; j < N / 2; j++)
{
int k = N - i - j;
if ((j % 2 == 0) || (k % 2 == 0))//j或k为偶数
continue;
if (judge_prime(i) && judge_prime(j) && judge_prime(k))
{
cout << i << '+' << j << '+' << k << endl;//i、j、k为三个奇质数,i+j+k等于N
return 0;
}
}//for
}//for
return 0;
}
若有错误请留言。