这里将介绍求两个正整数的最小公倍数(Least Common Multiple,LCM)的方法。提供两种主要思路,一种是直接根据最小公倍数的定义设计算法,一种是由最大公约数计算得出。下面来介绍这两种方法。
定义法
求解两个正整数的最小公倍数的第一种思路,根据定义设计算法,最小公倍数的本质是一个最小的能同时被两整数整除的自然数。我们先比较两数大小,从较大数开始向上递增,直到找到那个最小公倍数。
代码如下:
#include<stdio.h>
int main()
{
int i=0;
int m,n,temp;
printf("请输入两个正整数:");
scanf("%d %d",&m,&n);
if(m<n) //比较大小,使m为较大数,n为较小数
{
temp=n;
n=m;
m=temp;
}
for(i=m;i>0;i++) //从较大数开始寻找符合条件的最小公倍数
{
if(i%m==0 && i%n==0)
{
printf("%d和%d的最小公倍数是%d",m,n,i);
break;
}
}
return 0;
}
辅助法
求最小公倍数也可以借助最大公约数辅助计算,公式为最小公倍数=两数的乘积/最大公约(因)数。解题时避免将两个问题混淆。
连续整除检测法
这种方法的实现原理是,先取出两个数中的较小数,赋值给temp(temporary),接着用其中一个数与temp求余,若余数不为0,则temp-1,循环该步骤直到余数为0。再用另一个数,重复此步骤,最后得出的值利用公式计算得到这两个数的最小公倍数。
代码如下:
#include<stdio.h>
int main()
{
int i=0;
int m,n,temp;
printf("请输入两个正整数:");
scanf