求最大公约数和最小公倍数的算法和程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

相关文档
最新文档