2817: 练46.3 哥德巴赫猜想
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:6
解决:6
题目描述
哥德巴赫猜想是近代三大数学难题之一,即任何一个大于$2$的偶数,都可表示成两个素数之和。如$4=2+2$,$6=3+3$,$8=3+5$,$10=3+7$。
请定义一个判断素数的函数,利用它验证$4\sim n$之间的偶数都能够分解为两个素数之和,其中$n≥4$ 。
请定义一个判断素数的函数,利用它验证$4\sim n$之间的偶数都能够分解为两个素数之和,其中$n≥4$ 。
输入
一行一个整数,为$n$。
输出
输出若干行,每行输出一个等式,表示$4\sim n$之间的偶数被分解为两个素数之和,若偶数不符合该整式,则输出“验证失败!”。
样例输入 复制
10
样例输出 复制
4=2+2
6=3+3
8=3+5
10=3+7
提示
#include<iostream>
using namespace std;
int sushu(int x) //求素数
{
if(x<=1) return 0; //0 或 1 不是素数
if(x==2) return 1; //2 是素数
for(int i=2;i*i<=x;i++) //大于 2 的时候
if(x%i==0) return 0;
return 1;
}
int main()
{
int i,j,n;
//cout<<"n=";
do //当 n<4 时,不输出,只读入
{
cin>>n;
}while(n<4);
for(i=4;i<=n;i+=2)
{
for(j=2;j<i;j++)
if(sushu(j)) //枚举 j 是素数
if(sushu(i-j)) //判断 i-j 是不是素数
{
cout<<i<<'='<<j<<'+'<<i-j<<endl;//输出整式
break;
}
if(i==j) cout<<i<<"验证失败!"<<endl;
}
return 0;
}