新手入门:关于c++中判断2000以内哥德巴赫猜想成立的方法
来源:互联网 发布:惠普1513驱动for mac 编辑:程序博客网 时间:2024/05/16 05:33
哥德巴赫在1742年给欧拉的信中提出了以下猜想:任一大于2的偶数都可写成两个质数之和。这也就是著名的哥德巴赫猜想。
这个猜想在如今都很难被证明。因此,我以一名计算机初学者的身份编写了一段最基础的代码,来判断限定范围(2000以内)哥德巴赫猜想成立。
先挂上代码:
#include <iostream>
using namespace std;
//求2000以内哥德巴赫猜想的代码
//判断一个数是不是素数
int judge1(int x)
{
int n;
bool result=true;
for(n=2;n<x;n++)
{
if (x%n==0)
{
result=false;
break;
}
}
return result;
}
//判断一个偶数为两个素数之和
int judge2(int y)
{
int a,b;
bool respond=false;
for (a=1;a<=y;a++)
{
b=y-a;
if(judge1(a)==true&&judge1(b)==true)
respond=true;
}
return respond;
}
int main()
{
int m;
bool c=true;
cout<<"求哥德巴赫猜想在2000以内成立吗?"<<endl;
for (m=1;m<=1000;m++)
{
if (judge2(2*m)==false)
c=false;
}
if (c=1)
cout<<"这个猜想成立"<<endl;
if (c=0)
cout<<"这个猜想不成立"<<endl;
}
整段代码分为两个部分:主函数及自定义函数。自定义函数中包含判断是否为素数的函数“judge1”和判断一个偶数是否为两个素数之和的函数“judge2”
要证明哥德巴赫猜想成立,首先得输入一个数,然后判断这个数是否可以分别为两个素数之和。然而在这之前还得判断什么数是素数。
由于初学者的身份,对于很多c++中技巧掌握不熟练,暂时想到的是编写一段函数来判断一个数是不是素数,
即judge1:
对于任意一个数n,如果它不能被2~(n-1)间的任意一个数整除,那么它就是素数。
(要实现判断,先定义一个bool变量为true,之后开始循环,如果循环中能找到这样的一个数,就返回false;如果循环完后都没发现这样的一个数,就返回true)
judge2的任务是:
将任意一个数n拆分成1与n-1,2与n-2,3与n-3.......等一系列数,然后判断其中是否有一组数满足两个数都是素数。因此可以定义一个bool变量为false,然后开始拆分,如果碰到这样的一组数,就返回true。
主函数输入从1开始到2000的任意一个数,并从1开始进行判断。因此先设定一个bool变量为true,如果1~2000内任意一个数的judge2结果为false,那么主函数的bool变量返回false,并结束循环,输出“哥德巴赫猜想在2000以内不成立”;否则输出“哥德巴赫猜想在2000以内成立”。
以上代码在很多地方都有需要优化的地方,比如说judge1中,可以将n-1变成根号n,再如judge2中,拆分方法也可以优化。这些方面我会在日后的学习中掌握。
- 新手入门:关于c++中判断2000以内哥德巴赫猜想成立的方法
- 两种不同方法验证-10000以内满足哥德巴赫猜想的数
- 哥德巴赫猜想(c 循环+素数判断)
- 哥德巴赫猜想验证(100以内)-C语言
- 哥德巴赫猜想,2000以内的正偶数分解为两个素数之和
- 哥德巴赫猜想(验证2000以内的正偶数能够分解成两个素数之和)
- 自己写的c语言哥德巴赫猜想
- 哥德巴赫猜想的C语言编译
- 关于哥德巴赫猜想
- [C语言]哥德巴赫猜想
- 验证哥德巴赫猜想-C
- 哥德巴赫猜想 C
- c语言--哥德巴赫猜想
- c实现哥德巴赫猜想
- 【C语言】哥德巴赫猜想
- 哥德巴赫猜想的解析
- 哥德巴赫猜想的拓展
- 哥德巴赫猜想的拓展
- 数字图像处理二
- hdu5920 Ugly Problem 回文串+高精度
- linux入门之sshd练习
- 使用FFmpeg转录网络直播流
- CH375
- 新手入门:关于c++中判断2000以内哥德巴赫猜想成立的方法
- Matlab画图 包含多个legend
- codeforce#375D. Lakes in Berland
- 智能小车制作过程全纪录: 四、软件平台--- Java 控制GPIO
- 球色问题
- Android 知识点收藏索引
- Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'
- NIO实现文件流插入数据(粘贴功能)
- 数据结构笔记--绪论