C语言课件 第19 20章.ppt
《C语言课件 第19 20章.ppt》由会员分享,可在线阅读,更多相关《C语言课件 第19 20章.ppt(35页珍藏版)》请在三一办公上搜索。
1、第19章哥德巴赫猜想,问题描述 问题分析及实现 开发过程常见问题及解决,第19章哥德巴赫猜想,问题描述 问题分析及实现 开发过程常见问题及解决,第19章哥德巴赫猜想,问题描述 问题分析及实现 开发过程常见问题及解决,第19章哥德巴赫猜想,问题描述 问题分析及实现 开发过程常见问题及解决,哥德巴赫猜想,从哥德巴赫猜想(Gold Bach Conjecture)提出这个猜想至今,许多数学家都不断努力想攻克它,但都没有成功。本章将使用C语言从算法问题入手,并一步步实现一个验证“猜想”结论正确性的程序。,19.1 问题描述,哥德巴赫猜想大致可以分为以下两个猜想。二重哥德巴赫猜想:每个不小于6的偶数都可
2、以表示为两个奇素数之和,如下:6=3+3;8=3+5;10=5+5 三重哥德巴赫猜想:每个不小于9的奇数都可以表示为三个奇素数的和,如下:9=3+3+3;11=3+3+5;13=3+5+5在这里,我们以二重哥德巴赫猜想作为研究对象,通过编写C语言程序,来验证“猜想”的正确性。,19.2 问题分析及实现,19.2.1 问题分析19.2.2 问题实现19.2.3 程序运行,19.2 问题分析及实现,拿到一个要求实现的算法问题,首先要看清、想明、把握每一个细节。只有这样,才可以顺利地将算法实现。由问题描述:“每个不小于6的偶数都可以表示为两个奇素数之和”,可知,我们要实现的是判断任何一个大于6的偶数
3、都可以有两个素数相加。以下将仔细地分析问题并实现算法。,19.2.1 问题分析,而我们的将要编写的程序,就是为了验证哥德巴赫猜想中提到的任何一个偶数,对大于6的偶数n可以分解成两个素数的和,这个结论是否正确。所以,程序应该可以输入一个数,判断是否为偶数,将这个偶数分解成一个小素数和大素数。再分别判断小素数与大素数之合是否就等于这个偶数。而且,需要将结果打印输出。,19.2.1 问题分析,我们在编程之前,需要明确两个数学概念:素数和偶数。素数就是质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和数自身)的自然数即为素数。偶数就是能被2整
4、除的自然数,如2、4、6、8。根据题目,要求是奇素数,即这个素数不可以是2,一定要大于2。我们需要划分以下两个子模块。判断一个数是否为素数。判断并分解大小素数的和是否等于需判断的偶数。,19.2.2 问题实现,1.判断输入的数字是否是素数对于一个任何自然数,如何判断他是素数呢?如果这个自然数n,它存在两个因数,乘积等于n,要么两个因数一个是小于、一个大于,要么两个因数都等于。那么,根据这个思路,代码如下(代码19-1.txt)。,19.2.2 问题实现,01/*测试n是否是素数。如果是,返回1,否则返回0*/02 int IsPrimer(unsigned long n)03 04 unsig
5、ned long i;05 unsigned long nqrt;06 if(n=2)07 return 1;08 if(n=1|n%2=0)09 return 0;10/*如果它存在两个因数,乘积等于n,要么两个因数一定一个小于根号n,一个大于根号n要么两个因数都等于根号n*/11 nqrt=(unsigned long)sqrt(n);12 for(i=2;i=nqrt;i+=1)13 14 if(n%i=0)15 return 0;16 17 return 1;18,19.2.2 问题实现,2.将数偶数分解成两个素数,并判断“猜想”结论是否成立。取一个数i,从最小素数开始到这个偶数的一半
6、大小进行判断,当i为素数同时n-i也是素数时,这时猜想结论成立,否则结论不成立。代码如下(代码19-2.txt)。,19.2.2 问题实现,01 int IsRight(unsigned long n,unsigned long*tmpNumA,unsigned long*tmpNumB)02 03 unsigned long i;04 unsigned long half;05 half=n/2;06 for(i=3;i=half;i+=2)07 08 if(IsPrimer(i)16,19.2.2 问题实现,3.要求用户输入,判断,并输出结果。在主程序中,要求用户输入一个大于6的偶数,调用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课件 第19 20章 语言 课件 19 20
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2338628.html