求最大公约数和最小公倍数的算法
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 }
浙公网安备 33010602011771号