验证哥德巴赫猜想(C++)

哥德巴赫猜想:
1)任一不小于6的偶数,都可以表示成两个奇质数之和
2)任一不小于9的奇数,都可以表示成三个奇质数之和

欧拉也提出另一个等价版本,即任一大于2的偶数都可写成两个质数之和。欧拉的命题比哥德巴赫的命题要求更高。现通常把这两个命题统称为哥德巴赫猜想。

算法:
将6~n以内的偶数分解为两个质数之和
设n=n1+n2

  1. 令n1=3~n/2
  2. 若n1是质数,则令n2=n-n1;否则n1++,再转2
  3. 若n2是质数,则分解式已找到,否则,令n1++,再转2

代码:

#include <iostream>
#include <math.h>
using namespace std;
void divide(int);
int isPrime(int);

int main()
{
    int i,n;
    cout<<"请输入一个大于6的整数:";
    cin>>n;
    if(n<6) return 0;
    for(i=6;i<=n;++i)//从 6到 n,每个数都判断一次
        divide(i);
    return 0;
}

void divide(int n)
{
    int i,m;
    for(i=3;i<n/2;++i)
    {
        if(isPrime(i)==0) continue;//i不是质数
        m=n-i;
        if(isPrime(m)!=0) break;//m是质数
    }
    if(i>n/2)
        cout<<"哥德巴赫猜想不成立";
    cout<<n<<"="<<i<<"+"<<m<<endl;
}

int isPrime(int n)//判断质数
{
    int i;
    for(i=2;i<=sqrt(n);++i)//循环根号n次即可
    {
        if(n%i==0) return 0;//不是质数
        return 1;//是质数
    }
}

原文链接: https://www.cnblogs.com/yuzilan/p/10626180.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    验证哥德巴赫猜想(C++)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/284317

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午7:49
下一篇 2023年2月15日 上午7:51

相关推荐