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

1、辗转相除法
辗转相除法又称为欧几里德算法。这个方法大家已经都已经在数学上学过了。具体的步骤就是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。最后的除数就是这两个数的最大公约数。举个例子就是:比如两个数字,x=453,y=36;

453%36=21;

36%21=15;

21%15=6;

15%6=3;

6%3=0;

%是取余符号,大家应该都知道吧。所以用这个算法可以求出453和36的最大公约数是3;
求最小公倍数相对来说就比较简单了。只需要先求出最大公约数。用两个数的乘积除以最大公约数即可。

用C语言实现这个算法就是。

 

 1 #include <stdio.h> 
 2 int main()
 3 {
 4     int a,b,c,m,n;
 5     scanf("%d%d",&a,&b);
 6     m=a;
 7     n=b;
 8     if(a<b){
 9     c=a;
10     a=b;
11     b=c;
12     }
13     while(b)
14     {    
15     c=a%b;
16     a=b;
17     b=c;
18     }
19     c=m*n/a;
20     printf("%d %d\n",a,c);
21     return 0;
22 }

 

posted @ 2020-10-27 20:03  锦瑟波力斯卡  阅读(416)  评论(0)    收藏  举报