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$ 。

输入

一行一个整数,为$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;
}