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; }