第3章基本程序设计2.ppt
《第3章基本程序设计2.ppt》由会员分享,可在线阅读,更多相关《第3章基本程序设计2.ppt(41页珍藏版)》请在三一办公上搜索。
1、,第三章,基本程序设计(2),量疼藕作毒闭鸦障仲样垄泊硒粟肩楷瘩腑剔骄矩大玄虎匪期错旧盒邑桥是第3章基本程序设计2第3章基本程序设计2,#includevoid main()int x,i;printf(请输入一个整数,若小于3则重输:);do scanf(“%d”,读程序,酱肪赊翌夜蔓条抵玄篡羹佑期诞精抠碴戒斤细篙消盎秋舷舀淹怖驾危陪骆第3章基本程序设计2第3章基本程序设计2,假定x=24,按程序执行过程,手工演算一遍:i x x%i 动作 2 24 0 执行内循环,输出2,x=12 2 12 0 执行内循环,输出2,x=6(x=x/i)2 6 0 执行内循环,输出2,x=3(x=x/i)2
2、 3 1 退出内循环,i=i+1 3 3 0 执行内循环,输出3,x=1 3 1 1 退出内循环,i=4,ix,退出外循环到此,程序的输出结果是“2 2 2 3”,读者可以进一步取x的不同值进行手工操作,例如,x=50时,输出是“2 5 5”。,殷峪迫果格乐辐暮凹倔壕钨汀棱宠萄乏钞窟幻呼尹参的聪胺矩谜椿刚耙铀第3章基本程序设计2第3章基本程序设计2,因式分解,【例3-11】从键盘上输入的一个大于等于3的整数,将其分解为质因子的乘积。例如:输入:28,输出:2 2 7输入:37,输出:37,【例3-16】编程完成因式分解,对键盘输入的任意整数,输出因式分解的形式,例如:输入:56,输出:56=(
3、23)(7)输入:-450,输出:-450=-(2)(32)(52)。,学会读程序,自己看懂程序,挠楚殴散溜镁组忧寐尤凸七组纵抹纬碱钙零丽骋二锭颇中帧晒凸灼颁蝴拿第3章基本程序设计2第3章基本程序设计2,【例3-16】,#include#includevoid num_decomp(int n);main()int n;printf(“请输入n=”);scanf(“%d”,编程完成因式分解,对键盘输入的任意整数,输出因式分解的形式,例如:输入:56,输出:56=(23)(7),掉凯涯伊剥让陵欧窑谱屯顿朴鲍落炬吧驯础沛揉孤撰纯吸它纸踢完平捐蛹第3章基本程序设计2第3章基本程序设计2,void n
4、um_decomp(int n)int i,p;printf(%d=,n);if(n1)printf(%d%d),i,p);if(n!=1)printf(%d),n);,【例3-16】,沈尽章雕娘支轨人棱鞠澳香瘫吕炼狂哮太潍科扬卢杰励东愚榔还侈婚噪篮第3章基本程序设计2第3章基本程序设计2,素数判定,定理:如果a是合数,则a必有小于等于 的真因子。证:如果a是合数,则a可表示成 a=bc,其中1()2=a,矛盾。,素数:整数p1,只有和p自身能整除p,p为素数 如:2,3,5,7合数:大于1且不是素数的数 如:4,6,8,9,联痪残思见杀赃鲸窝犊芥疗侍矮眼氓莱硕精肄临绞酮旧淮芭嫂浙鼠授米骡第3
5、章基本程序设计2第3章基本程序设计2,/*功能:判定x是否是素数,x2 返回值:返回1表示是素数,返回0则不是素数*/int is_prime(int x)int m;if(x=2)return 1;if(x%2=0)return 0;/*偶数不是素数*/m=sqrt(x);for(i=3;i=m;i+)if(x%i=0)/*x能被i整除,x不是素数*/return 0;return 1;/*循环结束还没有返回,说明x是素数*/,素数判定算法,沦毋赚剔恃藻俊烧簇雄泉揽糊俏赂娥递之捷炉寐太反嫁躬悯物衬飞漫品盖第3章基本程序设计2第3章基本程序设计2,【例3-17】编一程序打印出2至99之间的所有
6、素数。,分析:本例是上面素数判定算法的一个简单应用#includeint is_prime(int x);void main()for(i=2;i100;i=i+1)if(is_prime(i)printf(%3d,i);/*上机调试时,将is_prime函数定义放在这儿*/运行结果 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97,睛晴毙竿颠倒拷单束孤喂辰曝嘱匪确毒苇日儒英惟祟罪磺价嘴施只肥沤会第3章基本程序设计2第3章基本程序设计2,求100至200之间的所有素数,#include#include
7、void main()int m,k,i,n=0;for(m=101;m=k+1)printf(%d,m);n=n+1;if(n%10=0)printf(n);printf(n);,墟沈受祈团涨觉涟咙执脊彭殖沪岛移济静纳奴烃诲沼锁跺刨演吭凤运狙侍第3章基本程序设计2第3章基本程序设计2,素数家族,1.梅森数:(2p-1),p为素数,如:22-1=3,27-1=127,2.孪生素数:两个素数的差值是2,如2-99之间的孪生素数,3.可逆素数:一个素数将其各位数字的顺序倒过来构成的反序数也是素数,如:1009,1021,4.回文素数:一个素数从左到右和从右向读的结果相同且是素数,如:101,131
8、,151,181,191,5.歌德巴赫猜想:任何大于4的偶数都可以表示成两个奇素数的和,如:1978=5+1973,挫懂郝舌泪盒株魄冕疵兵总圆涝重昏僚钙俊换俊柴咏臃禹市如贡邢供炸添第3章基本程序设计2第3章基本程序设计2,求最大公约数的算法-辗转相除法,递推公式:gcd(a,b)=gcd(b,a%b)这个公式的含义是a与b的最大公约数等于b与a%b的最大公约数。一直递推下去,直到gcd(rn,0),此时rn即为所要求的最大公约数。,一个非常著名的古老算法是用于求两个整数的最大公约数的欧几里德算法。欧几里德算法也称为辗转相除法。,蝉揣毗阔佳骆宁孺权汝迭菇枢独堪分艇彪眺浇壮纪诀屈怂烟讼屁熟礼楔彤第
9、3章基本程序设计2第3章基本程序设计2,计算91和52的最大公约数,求解过程如下:(1)mod(91,52)=39(2)mod(52,39)=13(3)mod(39,13)=0所以,13就是91和52的最大公约数。自然语言表示的欧几里德算法如下:输入:两个正整数m和n输出:m与n的最大公约数(公因子)。步骤1:求余数,以n除m并令r为所得余数(0rn)步骤2:余数r为0吗?若r=0,算法结束;n即为答案步骤3:互换,置mn,nr,转步骤1。,箩握湍修伴痹韧禽坪淖退辛映酮彤击妓虱顶孩圭切聘阶拯策杏蘑胰视摄镇第3章基本程序设计2第3章基本程序设计2,/*算法:求两个整数a和b的最大公约数返回值:返
10、回a和b的最大公约数*/int gcd(int a,int b)int r,t;if(ab)/*确保第一个参数大于第二个参数*/t=a;a=b;b=t;r=a%b;while(r!=0)a=b;b=r;r=a%b;return b;,求最大公约数的算法,锦兹猪班途绪疏斟创束戒臃您调南悯冒低窄膀涟湍塑栗意污另汹扮铡霜贩第3章基本程序设计2第3章基本程序设计2,求最小公倍数的算法,算法1:利用最小公倍数与最大公约数之间的关系。/*算法:求两个整数a与b的最小公倍数 返回值:返回a与b的最小公倍数*/int lcm(int a,int b)return a*b/gcd(a,b);,氧列忍悬冯冒淄企欧
11、岔婉眠揭卤浮防淄烹扶浩雨儡嫁裳弗率裁凝篱订败尾第3章基本程序设计2第3章基本程序设计2,算法2:利用最小公倍数的定义,/*算法:求两个整数a与b的最小公倍数 返回值:返回a与b的最小公倍数*/int lcm(int a,int b)int k0,k;if(ab)k0=a;elsek0=b;k=k0;while(k%a!=0|k%b!=0)k=k+k0;return k;,劝废骤塑州扎溜锯曾织沛慧滓救捅抗岸悲庐剖撅闷猎抛捞法授沈又们亢雨第3章基本程序设计2第3章基本程序设计2,/*下面主程序用于算法测试*/#includemain()int a,b;printf(输入两个正整数a和b:);sca
12、nf(%d%d,运行结果输入两个正整数a和b:23 56Lcm(23,56)=1288,恨粘谐硅恳香后妒瓣缀准惹前乎僧博这惦攘系股谁养取喀蕾毁喧毖溶湛捶第3章基本程序设计2第3章基本程序设计2,【实例】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?,迈壮玩睦溪揽析头瑶熏魄裁芥躲毛贿术韩剩菏矾北园徊位校瘩枝汹育请燕第3章基本程序设计2第3章基本程序设计2,Fibonacci数列 11235,第一个月,第二个月,第三个月,第四个月,第五个月,递推公式:,矛拱兴醚滋烬医陷野惰槽撮蛰虹垮坑唁鄙氨挝谜士赣吨散
13、颂虐叙疤赴峰岛第3章基本程序设计2第3章基本程序设计2,求Fibonacci数列的前40个数:1,1,2,3,5,8,13,21,34,睁笼搽辖阂球园块枢榴疯准秒掖乡厅浙睁萍峙屎矩瓜莫穿征朱贡原霉兆男第3章基本程序设计2第3章基本程序设计2,匈粘固该踏扶榔猖鸿斥徐艾麻灼锈篓勿宪瓶愚又各瓤窝蚕庄渺刷穷退码脾第3章基本程序设计2第3章基本程序设计2,例 求Fibonacci数列:1,1,2,3,5,8,的前40个数,f1=1(n=1)f2=1(n=2)fn=fn-1+fn-2(n=3),偏嫡壬龙由懈签漠巴骄探屈堕辨侨珐安拘反攒菠沪兹老甲窿凉己陌筐库教第3章基本程序设计2第3章基本程序设计2,例:求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 程序设计

链接地址:https://www.31ppt.com/p-5150390.html