P1304 哥德巴赫猜想

P1304 哥德巴赫猜想超链接

 


 

 

简单说一下自己的思路:(我感觉也简单不到哪里去

1、既然是4-N(N为偶数),可以用一个循环(for),每次加2,写出所有的偶数;

2、因为输出为素数,并且两数之和等于要解的偶数,不妨设偶数为k,较小的质数为i,判断i与(k-i)是否为质数即可;

3、当有多组解时,输出完最小解时,用break结束循环,避免出现其他情况。


下面是代码实现:

#include<iostream>
#include<cmath>
using namespace std;
bool chg(int);
int main()
{
    int n;
    cin>>n;
    for(int k=4;k<=n;k+=2)
    {
        for(int i=2;i<=k/2;i++)
        {
                if(chg(i)&&chg(k-i))
                {
                    cout<<k<<"="<<i<<"+"<<k-i<<endl;
                    break;
                }
        }
    }
    return 0;
}
bool chg(int x)
{
    int i=2;
    while(i<=floor(sqrt(x))&&(x%i)!=0)
        i++;
    if(i>floor(sqrt(x)))
        return true;
    return false;
}

不再过多解释,简单易懂。

 

posted @ 2020-02-07 10:57  柠月与梦  阅读(548)  评论(0编辑  收藏  举报