第5章 循环程序设计--3.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 循环程序设计--3

素数判断类问题穷举法解决数学问题累加求和类问题逻辑判断类问题随机数类问题循环综合示例问题描述:打印输出100至200之间的全部素数。分析:素数是指只能被1和它本身整除的数。算法比较简单,先将这个数被2除,如果能整除,且该数又不等于2,则该数不是素数。如果该数不能被2整除,再看则是否能被3整除。如果被3整除,并且该数不等于3,则该数不是素数,否则再判断是否被4整除,依此类推,该数只要是能被小于本身的某个数整除时,就不是素数。 素数判断类问题示例1算法设计:1. num=100;2.如果num=200,则转3;否则,程序结束3. i=2;4. 如果 num%i != 0,则转5;否则,转6;5. i++,转4;6. 如果 num==i,则输出num;7. num++,转2;素数判断类问题示例1#include stdio.hint main(){ int num,i,count; count=0; for(num=100; num=200; num++) { i=2; while(num%i!=0) i++; if(num==i) { printf(%4d,num); count++; if(count%8==0) printf(\n); } } printf(\n); return 0;} 输出:从100到200之间所有的素数为: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199从2到num寻找第一个能被整除的数如果第一个能被整除的数等于该数本身,则说明该数为素数控制每行输出8个素数素数判断类问题示例1验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示。例如:4 = 2 + 2,6 = 3 + 3,98 = 19 + 79 解题思路:读入一个偶数n,将它分成p和q,使n = p + q。怎样分呢?可以令p从2开始,每次加1,而令q = n - p,如果p、q均为素数,则正为所求,否则令p = p + 1再试。素数判断类问题示例2这一思路的算法如下:读入大于3的偶数n。 p = 1 do { p = p + 1; q = n - p; p是素数吗? q是素数吗? } while (p、q有一个不是素数) 输出n = p + q。flagp = 1;for (j = 2; j = (int)sqrt(p); j++) if (p除以j的余数 = = 0) { flagp = 0; break; } 设置两个标志量flagp和flagq,1—是素数,0—不是素数 } while (flagp * flagq == 0); 素数判断类问题示例2 p = 1; do { p++; flagp = 1; for (i = 2; i = (int) sqrt(p); i++) { if (p % i == 0) { flagp = 0; break; } } q = n - p; flagq = 1; for (i = 2; i = (int)sqrt (q); i++) { if (q % i == 0) { flagq = 0; break ; } } } while (flagp * flagq == 0); printf (%d = %d + %d\n, n, p, q); }#include stdio.h#include math.hvoid main ( ){ int i, n, p, q, flagp, flagq; printf (please input n: ); do { scanf (%d, n);//输入一偶数 if (n 4 || n % 2 != 0)//如果该数不是偶数 printf (“error! even number\n); }while(n 4 || n % 2 != 0);素数判断类问题示例2用50元钱买了三种水果。各种水果加起来一共100个。西瓜5元一个,苹果1元一个,桔子1元3个,设计一程序输出每种水果各买了几个。 解题思路:本题有两个约束条件。第一是三种水果一共100个;第二是三种水果一共花了50元因此可以按一个约束条件列出所有可行的情况,然后对每个可能解检查它是否满足第二个约束条件。也可以用第二个约束条件列出所有情况,然后对每个可能解检查它是否满足第一个约束条件。穷举法解决数学类问题示例1 int mellon, apple, orange; //分别表示西瓜数、苹果数和桔子数 for (mellon=1; mellon10; mellon++) // 对每种可能的西瓜数 {for( apple=1; apple 50

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档