- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言期末复习1011-2解读
二、判断素数 三、验证哥德巴赫猜想 * 一、单选题(每题2分,共10分) 二、程序填空题(每空3分,共36分) 三、程序阅读题 (每题5分, 共25分) 四、程序设计题 (第1题14分,第2题15分,共29分) 常用算法一 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:计算 直到最后一项的绝对值小于1e-7时为止。 分析:这道题使用递推方法来做。让多项式的每一项与一个变量n对应,n的值依次为1,3,5,7,...,从多项式的前一项算后一项,只需将前一项乘一个因子: (-x2)/((n-1)*n) 用s表示多项式的值,用t表示每一项的值,程序如下: #include math.h void main() { double s,t,x; int n; printf(please input x:); scanf(%lf,x); t=x; n=1; s=x; do { n=n+2; t=-t*x*x/(n-1)/n; /* 计算通项 */ s=s+t; /* 累加求和 */ }while(fabs(t)=1e-7); /* 当累加项的值大于1e-7继续循环 */ printf(sin(%f)=%lf,x,s); } 常用算法一 算法思路:将m分别除以2,3,…,m-1,若都不能整除,则m为素数。事实上不必除那么多次,因为m=sqrt(m)*sqrt(m),所以,当m能被大于等于sqrt(m)的整数整除时,一定存在一个小于等于sqrt(m)的整数,使m能被它整除,因此只要判断m能否被2,3,…,sqrt(m)整除即可。 素数:指除了能被1和自身外,不能被其他整数整除的自然数。 判断素数的算法流程图 二、判断素数 #include math.h void main() { int m,i,k; printf(Enter m=\n); scanf(%d,m); k=sqrt(m); for(i=2;ik;i++) if(m%i==0) break; if(i=k) printf(Yes\n); else printf(No\n); } 程序代码如下: 打印输出100---200之间的素数 #include math.h void main() { int m,i,k; for(m=101;m=199;m++) { k=sqrt(m); for(i=2;ik;i++) if(m%i==0) break; if(i=k) printf(“%d\n“,m); } } 二、判断素数 #include math.h int isprime(int m) { int i,k; k=sqrt(m); for(i=2;ik;i++) if(m%i==0) return 0; return 1; } 2003年等级考试编程题 输入两个正整数m和n(mn),求从m到n之间(包括m和n)所有素数的和,要求定义并调用函数isprime(x)来判断x是否为素数(素数年是除1以外只能被自身整除的自然数)。 void main() { int m,n,i,k=0; do { scanf(“%d%d”,m,n); }while (m0 || n0 || mn); for(i=m;i=n;i++) if(isprime(i)==1) k+=i; printf(“%d\n“,k); } 一个大于等于6的偶数可以表示为两个素数之和。 如: 6=3+3 8=3+5 10= 3+7 设n为大于等于6的任一偶数,将其分解为n1和n2两个数,使用n1+n2=n,分别判断n1和n2是否为素数,若都是,则为一组解。若n1不是素数,就不必再检查n2是否素数。先从n1=3开始,直到n1=n/2为止。 图3-21 验证哥德巴赫猜想的N-S流程图 #include stdio.h void
文档评论(0)