第3章基本程序设计2.ppt
《第3章基本程序设计2.ppt》由会员分享,可在线阅读,更多相关《第3章基本程序设计2.ppt(41页珍藏版)》请在第壹文秘上搜索。
1、第三章第三章#includevoid main()int x,i;printf(请输入一个整数,若小于请输入一个整数,若小于3则重输则重输:);do scanf(“%d”,&x);while(x=2);i=2;do while(x%i=0)printf(“%d”,i);x=x/i;i+;while(ix,退出外循环退出外循环到此,程序的输出结果是到此,程序的输出结果是“2 2 2 3”,读者可以进一,读者可以进一步取步取x的不同值进行手工操作,例如,的不同值进行手工操作,例如,x=50时,输时,输出是出是“2 5 5”。因式分解因式分解【例【例3-11】从键盘上输入的一个大于等于】从键盘上输入
2、的一个大于等于3的整数的整数,将将其其分解为质因子的乘积分解为质因子的乘积。例如:。例如:输入:输入:28,输出:,输出:2 2 7输入:输入:37,输出:,输出:37【例【例3-16】编程完成因式分解,对键盘输入的任意整】编程完成因式分解,对键盘输入的任意整数,输出因式分解的形式,例如:数,输出因式分解的形式,例如:输入:输入:56,输出:输出:56=(23)(7)输入:输入:-450,输出:,输出:-450=-(2)(32)(52)。学会读程序自己看懂程序【例【例3-163-16】#include#includevoid num_decomp(int n);main()int n;prin
3、tf(“请输入请输入n=”);scanf(“%d”,&n);num_decomp(n);printf(n);编程完成因式分解,对键盘输入的任意整数,输出因编程完成因式分解,对键盘输入的任意整数,输出因式分解的形式,例如:式分解的形式,例如:输入:输入:56,输出:输出:56=(23)(7)void num_decomp(int n)int i,p;printf(%d=,n);if(n0)printf(-);n=abs(n);for(i=2;i1)printf(%d%d),i,p);if(n!=1)printf(%d),n);【例【例3-163-16】素数判定素数判定定理:定理:如果如果a是合数
4、是合数,则则a必有小于等于必有小于等于 的的真因子。真因子。证:证:如果如果a是合数,则是合数,则a可表示成可表示成 a=bc,其中其中1ba,1c()2=a,矛盾。矛盾。aaa素数素数:整数整数p1,只有和只有和p自身能整除自身能整除p,p为素数为素数 如如:2,3,5,7合数合数:大于大于1且不是素数的数且不是素数的数 如如:4,6,8,9/*功能:判定功能:判定x是否是素数,是否是素数,x2 返回值:返回返回值:返回1表示是素数,返回表示是素数,返回0则不是素数则不是素数*/int is_prime(int x)int m;if(x=2)return 1;if(x%2=0)return
5、0;/*偶数不是素数偶数不是素数*/m=sqrt(x);for(i=3;i=m;i+)if(x%i=0)/*x能被能被i整除,整除,x不是素数不是素数*/return 0;return 1;/*循环结束还没有返回,说明循环结束还没有返回,说明x是素数是素数*/素数判定算法素数判定算法【例【例3-173-17】编一程序打印出】编一程序打印出2 2至至9999之间的所有素数。之间的所有素数。分析:本例是上面素数判定算法的一个简单应用分析:本例是上面素数判定算法的一个简单应用#includeint is_prime(int x);void main()for(i=2;i100;i=i+1)if(is
6、_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 求求100100至至200200之间的所有素数之间的所有素数#include stdio.h#include#include#include void main()void main()int int m,k,i,m,k,i,n=0n=0;for(m for(m=101;m=200;=101;m=200;m=
7、m+2m=m+2)k=sqrt(m k=sqrt(m););for(i for(i=2;i=k;i+)=2;i=k+1)printf(if(i=k+1)printf(%d%d ,m);,m);n=n+1;n=n+1;if(n%10=0)printf(if(n%10=0)printf(nn););printf(printf(nn););素数家族素数家族1.梅森数梅森数:(2p-1),p为素数为素数,如如:22-1=3,27-1=1272.孪生素数孪生素数:两个素数的差值是两个素数的差值是2,如如2-99之间的孪生素之间的孪生素数数 3.可逆素数可逆素数:一个素数将其各位数字的顺序倒过来构成的反序
8、一个素数将其各位数字的顺序倒过来构成的反序数也是素数数也是素数,如如:1009,10214.回文素数回文素数:一个素数从左到右和从右向读的结果相同且是素一个素数从左到右和从右向读的结果相同且是素数数,如如:101,131,151,181,1915.歌德巴赫猜想歌德巴赫猜想:任何大于任何大于4的偶数都可以表示成两个奇素数的的偶数都可以表示成两个奇素数的和和,如如:1978=5+1973C语言程序设计语言程序设计求最大公约数的算法求最大公约数的算法-辗转相除法辗转相除法 递推公式:递推公式:gcd(a,b)=gcd(b,a%b)这个公式的含义是这个公式的含义是a与与b的最大公约数等于的最大公约数等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 程序设计