常用算法(三种基本结构)

上传人:mg****85 文档编号:33105177 上传时间:2018-02-13 格式:PPT 页数:23 大小:662.50KB
返回 下载 相关 举报
常用算法(三种基本结构)_第1页
第1页 / 共23页
常用算法(三种基本结构)_第2页
第2页 / 共23页
常用算法(三种基本结构)_第3页
第3页 / 共23页
常用算法(三种基本结构)_第4页
第4页 / 共23页
常用算法(三种基本结构)_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《常用算法(三种基本结构)》由会员分享,可在线阅读,更多相关《常用算法(三种基本结构)(23页珍藏版)》请在金锄头文库上搜索。

1、常用算法,带有数学函数的分段函数求值,#include#include void main()float x,y; cinx; if(x10)y=sqrt(x+1)/(2*x*x);else if(x-1) y=x*x*x*x*x+1;else y=3*x+1;couty=m; ws=log10(m)+1; g=m%10;s=m/10%10;b=m/100%10; q=m/1000%10;w=m/10000; coutws=wsendl; coutzx:; switch(ws) case 5:coutw; case 4:coutq; case 3:coutb; case 2:couts; ca

2、se 1:coutg; ,coutendlnx:; switch(ws) case 5:coutgsbqw;break; case 4:coutgsbq;break; case 3:coutgsb;break; case 2:coutgs;break; case 1:coutm; /*分离数字,个位放在sz0中.,n是数据位数*/ n=0; while(m!=0) szn=m%10; m=m/10;n+; cout=0;i-) coutszi;,/*构成逆序数*/nxs=0;for(i=0;in;i+) nxs=nxs*10+szi;cout nsx:n; cinx; p=1,q=1,m= -

3、 1,s=1; for(i=1;i=n;i+) m= - m; p*=i; ai=m*q/p; s+=ai; couts; ,前n+1项之和,各类数学表达式的求和、积及组合求值,#include void main( ) int i; float s,p; s=0;p=1,i=1; while(p=1e+6) s+=p; i+; p*=i; coutn; s=0;p=1; for(i=1;i=n;i+) p*=i;s+=p; coutm; n=1; while(n=m) if(m%n=0) s+=n; gs+; n+; couts=s gs=n; j=1;gs=0; while(j=n) if

4、(n%j=0) gs+; j+; if(gs=2) coutn yes; else coutn no;,判断一个数n是否是素数,判断的方法之一,1,2,n之中n的因子的个数,统计:,输入n,当jn; j=2,k=sqrt(n); while(j=k) if(n%j!=0) j+; else break; if(j=k+1) coutn yes; else coutn no; ,判断一个数n是否是素数,判断的方法之二,2,3,sqrt(n)之中的数都不是n的因子,验证:,输入n,当j=k时,n%j!=0,真,j+,假,break,j=2 k=sqrt(n),j=k+1,真,yes,假,no,退出

5、循环时j取值,j=k+1,执行break退出,j=k,n是素数,n不是素数,表达式jn; j=2,k=sqrt(n),f=1; while(j=k) if(n%j!=0)j+; else f=0;break; if(f=1) coutn yes; else coutn no;,判断一个数n是否是素数,设变量f,其值作为判断结果的标志f=1 n是素数f=0 n不是素数,输入n,当jn; j=2,k=sqrt(n),f=1; while(j=k) if(n%j!=0)j+; else f=0;break; if(f=1) coutn yes; else coutn no;,判断一个数n是否是素数,

6、设变量f,其值作为判断结果的标志f=1 n是素数f=0 n不是素数,输入n,当j=k时,n%j!=0,真,j+,假,f=0 break,j=2 f=1,f=1,真,yes,假,no,k=sqrt(n),判断一个数是否为素数、完数、水仙花数等各类数,s=0,n%i=0,for i=1 to n/2,T,s+=i,s=n,T,打印因子,for n=1 to 999,#include void main( )int n,i,s; for(n=1;n1000;n+) s=0; for(i=1;i=n/2;i+) if(n%i=0)s+=i; if(s=n) printf(n%d its factors

7、 are:,n); for(i=1;i=n/2;i+) if(n%i=0)printf(%4d,i); ,判断n是否是完数,若m是水仙花数,则:,(2) b:m的百位数,(1) 是三位数,s:m的十位数,g:m的个位数,m=b3+s3+g3,b、s、g的范围,#include void main( )int m,b,s,g; for(b=1;b=9;b+) for(s=0;s=9;s+) for(g=0;g=9;g+) m=b*100+s*10+g; if(m=b*b*b+s*s*s+g*g*g) coutm ; ,判断一个数是否为素数、完数、水仙花数等各类数,找出所有的水仙花数。,b:19

8、s:09 g:09,若m是水仙花数,则:,(2) b:m的百位数,(1) 是三位数,s:m的十位数,g:m的个位数,m=b3+s3+g3,#include void main( )int m,b,s,g; for(m=100;m1000;m+) g=m%10; s=m/10%10; b=m/100; if(m=b*b*b+s*s*s+g*g*g) coutm ; ,判断一个数是否为素数、完数、水仙花数等各类数,找出所有的水仙花数。,费波纳契数列(1,1,2,3,5,8,13),f1=f2,斐波那契数列:1 1 2 3 5.f,要求计算数列之和及平均值,直到f大于105为止,分析 1 1 2 3

9、 5,m+,while f=1e+5,=f1+f2,f=f1+f2,f1=1,f2=1,s=2,m=2,pj=s/m 输出s及pj,s+=f,f2=f,#include void main() int f1,f2,f,s,m; float pj; f1=1,f2=1,s=2,m=2; f=f1+f2; while(f=1e+5) m+;s+=f; f1=f2;f2=f;f=f1+f2;,f1,f2,f,第三项,=f1+f2,f1,f2,f,第四项,=f1+f2,f1,f2,f,第五项,f=f1+f2,pj=s*1.0/m; couts= s ,pj= n; for(i=1;i=n/2;i+)c

10、outf1tf2t;f1=f1+f2;f2=f1+f2; if(n%2) coutn; for(i=2;in;i+)fi=fi-1+fi-2; for(i=0;in;i+) coutfi ;,各类有规律数列,2/1,3/2,5/3,8/5,前20项之和,数列中每一项的分子用a表示,分母用b表示,第一项:,a=2 b=1,从第二项开始,分子=前项的分子+前项的分母 =a+b分母=前项的分子 =ac=a;a=a+b;b=c;,#include void main( )int a,b,c,i; float s; a=2;b=1;s=0; for(i=1;i=20;i+) s+=a*1.0/b; c=a; a=a+b; b=c; couts;,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号