#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
//验证任意大于2的偶数都可以表示成两个素数之和//判断一个数是否为素数
/*算法流程:试除法
用 2、3、4、...、sqrt(n)去除n
如果能被整除则为合数
不能整除则为素数
*/
bool judge(int n){//先对n进行判断if(n<=1){return 0;}if(n==2){return 1;}//开始迭代判断int i=2;int sqrt_n=(int)sqrt((double)n);for(i=2;i<=sqrt_n;++i){if(n%i==0){return 0;}}return 1;
}
//验证猜想_1
void function_1(void){int i,n;for(i=4;i<=2000;i+=2){//从4开始验证 //将i分解为两个数、这两个数的和等于ifor(n=2;n<i;n++){//最小的素数为2、从2开始遍历 //判断n是否为素数if(judge(n)){//n为素数 //求出另一个加数if(judge(i-n)){//得到一对符合要求的素数 cout<<i<<":\n";cout<<"\t "<<n<<" "<<i-n<<endl; //对偶数 i 验证成功break; } }}//如果上面的循环体结束后,i==n则对i没有验证成功 if(i==n){cout<<"Error: "<<i<<endl; } }
}
//验证猜想_2
void function_2(){int i,n;for(i=4;i<=2000;i+=2){//从4开始验证 //将i分解为两个数、这两个数的和等于ifor(n=2;n<=i/2;n++){//最小的素数为2、从2开始遍历 //判断n是否为素数if(judge(n)){//n为素数 //求出另一个加数if(judge(i-n)){//得到一对符合要求的素数 cout<<i<<":\n";cout<<"\t "<<n<<" "<<i-n<<endl; //对偶数 i 验证成功break; } }}//如果上面的循环体结束后,i==n则对i没有验证成功 if(i==n){cout<<"Error: "<<i<<endl; } }
} //验证猜想_3
void function_3(void){//我们可以申请一个表int* list=(int*)malloc(sizeof(int)*(2001));//第1个空间不使用int i=2;for(i=2;i<=1999;++i){if(judge(i)){list[i]=1;}else{list[i]=0;}}//进行验证int n;for(i=4;i<=2000;i+=2){//从4开始验证 //将i分解为两个数、这两个数的和等于ifor(n=2;n<=i/2;n++){//最小的素数为2、从2开始遍历 //判断n是否为素数if(list[n]&&list[i-n]){//n为素数 cout<<i<<":\n";cout<<"\t "<<n<<" "<<i-n<<endl; //对偶数 i 验证成功break; }}//如果上面的循环体结束后,i==n则对i没有验证成功 if(i==n){cout<<"Error: "<<i<<endl; } }//释放申请的内存空间free(list);
}
int main(int argc,char**argv){function_1();//可见验证猜想是成功的//怎样进一步优化算法//(1)偶数的分解存在重复/*i=4 (2*,2) |(3,1)i=6 (2,4) (3*,3) (4,2) |(5,1)i=8 (2,6) (3,5) (4*,4) (5,3) (6,2) |(7,1)有规律可见,除最后一项、从i/2开始出现对称性重复 而且最后一项我们会发现、1不是素数。所以我们可以完全不验证最后一项 */function_2();//可见我们也完美的进行了验证//怎样再优化?//我们可以知道、judge函数调用了不少次呢?//而且judge函数作用被重复调用function_3(); cout<<"Donald Ervin Knuth 说 \"程序是蓝色的诗!\""<<endl;cout<<"持之以恒地学习,没有什么是学不会的,行动起来,没有什么不可以。"; cout<<"趁着年轻加油吧小伙子!实现自己地梦想、而不是将来的上班下班吃饭睡觉上班下班......";return 0;
}

验证歌德巴赫猜想(2021/1/16)相关推荐

  1. Bailian3143 验证“歌德巴赫猜想”【筛选法】

    3143:验证"歌德巴赫猜想" 总时间限制: 1000ms 内存限制: 65536kB 描述 验证"歌德巴赫猜想",即:任意一个大于等于6的偶数均可表示成两个素 ...

  2. java验证歌德巴赫猜想

    验证歌德巴赫猜想.一个充分大的偶数(大于或等于6)可以分解为两个素数之和. 试编程序,将 6至50之间全部偶数表示为两个素数之和. 代码: //定义素数函数,调用,三重循环,6到50之间的偶数 pub ...

  3. 验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。请输入一个偶数,将其表示成两个素数之和。

    验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和.请输入一个偶数,将其表示成两个素数之和. #include<iostream> #include<cmath> ...

  4. java实现验证验证歌德巴赫猜想(简易版)

    一.哥德巴赫猜想简单介绍 哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的整数都可写成三个质数之和..但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一 ...

  5. 验证“歌德巴赫猜想”

    d数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是素数.本实验的任务是设计一个程序,验证20亿以内的偶 ...

  6. 验证“歌德巴赫猜想”,即:任意一个大于等于6的偶数均可表示成两个质数之和

    设计一个判断某个数是否质数的函数,函数原型为:int IsPrime (int n) 参数n是被判断的数,若是质数函数返回1,否则函数返回0.设计一个将某数n分解为两个数之和的函数,函数原型为:voi ...

  7. PHP验证歌德巴赫猜想:一个充分大的偶数(大于或等于6)可以分解为两个素数之和。编写程序,将6至50之间全部偶数表示为两个素数之和。

  8. C语言:歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和

    1.验证歌德巴赫猜想:2000以内的正偶数(不包括2)都能够分解为两个质数之和. 算法思路:将整数分解为两个整数,然后判断它们是否均为质数.若是,则满足题意并输出:否则重新进行分解和判断.其中,判断一 ...

  9. C/C++程序训练6—歌德巴赫猜想的证明

    C/C++程序训练6-歌德巴赫猜想的证明 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Descriptio ...

最新文章

  1. 在线作图丨绘制一个含饼图的组内网络分析图(Network Analysis)
  2. 解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...
  3. JDBC编程专题4之JDBC驱动程序类型
  4. python3 多进程 multiprocessing 报错 AttributeError: ‘ForkAwareLocal‘ object has no attribute ‘connection‘
  5. 查询每日规定时间段内的记录
  6. python3 lambda函数字典排序_排序字典表理解中的lambda函数
  7. python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
  8. modernizer的意义
  9. 这个爱喝酒的酒鬼可真是让人操碎了心
  10. 深度技术win11 32位全新专业版系统v2021.07
  11. “CAIL 2021中国法律智能技术评测”第二赛段已全面开启!
  12. java计算机毕业设计图书馆预约占座系统源码+系统+数据库+lw文档+mybatis+运行部署
  13. 复杂系统学习(五):细胞自动机 I:1D 和 2D CAs
  14. 微信小程序——video视频播放
  15. 基于asp.net806莆田新华网上书店_图书销售系统
  16. 放量十字星——黎明前的曙光还是黑暗前的夕阳
  17. 千呼万唤始出来——DataV私有部署功能
  18. 武书连2022中国大学综合实力排行榜发布!
  19. 腾讯又一长达 8 年的服务下架。。。
  20. 富贵险中求?回顾AMD历次决策之是非对错(AMD授权中国生产x86之后)

热门文章

  1. python 相册_[Python]爬虫批量获取哔哩哔哩Coser的相册
  2. 机器人公敌过获奖没有_我机器人(机械公敌2)什么时候上映
  3. Linux——(1) 虚拟机(Virtual Machine)
  4. NB-IoT模组低功耗设计:DRX,eDRX和PSM
  5. rxjava 二:简单理解Disposable
  6. Mac安装ettercap
  7. 函数 void insert(char *s, char *t, int pos) 将字符串 t 插入到字符串 s 中,插入位置为 pos。请用 C 语言实现该函数。假设分配给字符串 s 的空间足够让
  8. 微信小游戏审核不通过解决方案(小游戏需具有完整的游戏玩法,不能为简单的素材堆砌)
  9. 前端如何在项目中做出亮点
  10. Golang 一致性Hash算法实现