哥德巴赫猜想
任一大于2的偶数都可写成两个素数之和
首先,对于这个问题我们应该一步一步分析
题目中有三个元素:偶数 和 两个素数
偶数可以直接由用户输入,那么我们的问题就是寻找两个素数
寻找两个素数又可以分解为—> 两个数 && 为素数
既然是两个数,那么我们自然而然地就要用两个for循环来写
那么这两个数有什么范围呢?
1。这两个数必然小于偶数的大小
2。素数>=2
循环的框架搭好了,那内部的就自然而然好写了
首先要判定第一个数是否为素数,如果为素数的话才能进行下面的循环
进入内部循环后
输出结果的条件则变为 第二个数为素数 && 素数1+ 素数2 == 输入的偶数
最终代码如下:
#include <iostream>
using namespace std;
//声明函数
int prime(int);
int main()
{
int x;//输入偶数
cin >> x;
for (int i = 2; i < x; i++)
{
//判断第一个数是否为素数
if (prime(i) == 1)
{
for (int j = 2; j < x; j++)
{
//判断第二个数是否为素数 且 满足两数之和为偶数x
if ((prime(j) == 1) && (i + j == x))
{
//满足,输出两个素数
cout << i << "\t" << j<<endl;
}
}
}
}
return 0;
}
//判断素数
//此处也可设置为布尔类型
int prime(int n)
{
for (int i = 2; i < n; i++)//可以把 n 换成 sqrt(n) 以减少运算
{
if (n % i == 0)// n可以整出除1和本身的数(不为素数)
return 0;//返回 0 函数结束
}
return 1;//循环顺利结束,n为素数,函数结束
}