求最大公约数和最小公倍数的算法和程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.main()
2.{
3.int p,r,n,m,temp;
4.printf("Please enter 2 numbers n,m:");
5.scanf("%d,%d",&n,&m);//输入两个正整数.
6.if(n 7.{temp=n; 8.n=m; 9.m=temp; 10.} 11.p=n*m;//P是原来两个数n,m的乘积. 12.while(m!=0)//求两个数n,m的最大公约数. 13.{ 14.r=n%m; 15.n=m; 16.m=r; 17.} 19.printf("Its MAXGongYueShu:%d\n",n);//打印最大公约数. 20.printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍数 用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数; 再用第一个余数除小的一个数,得第二个余数; 又用第二个余数除第一个余数,得第三个余数; 这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数 #include"stdio.h" #include main() { int a,b,x,y; printf("\n *****zui da gong yue shu he zui xiao gong bei shu*****\n"); printf("\nplease input two integer:\n"); scanf("%d,%d",&a,&b); x=f1(a,b); printf("zui da gong yue shu wei:%d\n",x); y=f2(a,b); printf("zui xiao gong bei shu wei:%d\n",y); } int f1(int a,int b) { int t,r; if(b>a) {t=a;a=b;b=t;} while((r=a%b)!=0) {a=b;b=r;} return(b); } int f2(int a,int b) { int i; for(i=1;i if(i*a%b==0) return(i*a); }