C语言程序设计第5章(姜恒远著).pptVIP

  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.1 素数判断 5.2 最大公约数求解 5.3 穷举法求满足条件的一组解 5.4 级数近似计算 5.5 一元非线性方程求根 *5.6 定积分近似计算 5.1 素数判断 5.1.1 最简单素数判断算法 5.1.2 改进后的素数判断算法 5.1.2 改进后的素数判断算法 算法描述 如果n2且n不能被2~sqrt(n)之间的所有整数整除,n就是素数。 程序实现 r=sqrt(n); for(t=1,i=2; ti=r; i++) if(n%i==0) t=0; if(t)printf(“%d is prime”,n); 5.2 最大公约数求解 最大公约数 能同时被x和y整除的最大整数是整数x和y的最大公约数(GCD) 。 例如:30和45的公约数有3、5、15,其中15是30和45的最大公约数。 5.2 最大公约数求解 5.2.1 brute-force算法 5.2.2 欧几里德算法 5.2.1 brute-force算法 算法描述 (1) 设x(或y)是x、y的最大公约数z; (2) 判断x和y是否均能被z整除。若z不能同时整除x和y则z-1→z,重复S2步。否则,做下一步操作; (3) 输出(或返回)z。 5.2.1 brute-force算法 #include stdio.h int main(void) { int x=30,y=45,z; z=x; while(!(x%z==0y%z==0)) z--; printf(“%d”,z); return 0; } 5.2.2 欧几里德算法 算法描述 (1) 判断x除以y的余数r是否为0。若r为0则y是x、y的最大公约数,继续做下步操作;否则y→x,r→y重复做第(1)步。 (2) 输出(或返回)y 5.2.2 欧几里德算法 #include stdio.h int main(void) { long x=100000,y=100005, r; while((r=x%y)!=0){ x=y; y=r; } printf(“%ld”,y); return 0; } 5.3 穷举法求满足条件的一组解 例1:某人在纸上写了一个四位整数3a45(a代表一个数字)。已知这个四位整数被3除后的值是1115,请问这个四位整数是什么? 算法描述 用a的所有可能取值(0?9)分别形成10个四位整数3045、3145、…、3945 依次判断这10个四位整数中的每一个被3除后的值是否1115,若是则输出。 5.3 穷举法求满足条件的一组解 #include stdio.h int main(void) { int a,b; for(a=0;a=9;a++){ b=3*1000+a*100+45; if(b/3==1115) printf(“%d”,b); } } 5.3 穷举法求满足条件的一组解 例2 中国古代数学著作《算经》中提出一个问题:公鸡每只5钱,母鸡每只3钱,小鸡1钱3只。若用100钱买100只鸡,可以有多少种买法? 用x表示可以买到的公鸡数量、y表示可以买到的母鸡数量、z表示可以买到的小鸡数量。 则: x+y+z=100, 5x+3y+z/3=100 5.4 级数近似计算 一个函数可以近似地表示为一个收敛的幂级数。因此函数求值问题可以归结为级数项求和问题。例如 : 用计算机计算无穷级数的值时只能计算有限个级数项的和。因此,用程序求得的级数值只能是在给定误差范围内的近似值。即:计算级数前n个项之和,当通项(第n项)的绝对值小于所给误差时停止级数项累加计算。 5.4 级数近似计算 5.4.1 简单方法 5.4.2 递推法 5.4.1 简单方法 程序实现 计算ex级数展开式的近似值,误差为键盘输入的eps。 5.4.2 递推法 算法描述 在计算级数的各项值时从前项结果推出后项结果 例如: 将级数: 表示为: 则: a1=1, an=an-1 x/(n-1) (n=2,3,4……) 5.4.2 递推法 采用递推法计算ex的级数展开式近似值,允许误差在eps范围内。 5.5 一元非线性方程求根 5.5.1 牛顿迭代法 5.5.2 二分法和弦截法 5.5.1 牛顿迭代法 牛顿迭代公式 xn+1= xn-f(xn)/f (xn) 求方程f(x)=0在x0附近的一个近似实根。 5.5.1 牛顿迭代法 (1)

文档评论(0)

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

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

1亿VIP精品文档

相关文档