这里我们介绍三种方法。
求两个数的最小公倍数,两个数的最小公倍数为:能被这两个数同时整除的最小的数
1.正常思路
最小公倍数就是能被这两个数同时整除的最小的数,那么运用c语言中循环进行遍历不断试除找到这个数。
#includeint my_pd(int m, int n,int x) { for (int i = x; i < 100000; i++) { if (i % m == 0 && i % n == 0) { return i; } } return 0; } int main() { int m, n; scanf("%d %d", &m, &n); int x = m > n ? m : n;//比较一下两个数循环时从大的数出发 int j = my_pd(m, n, x); printf("%d", j); return 0; }
2.利用辗转相除法
最小公倍数=两个数相乘除最法公约数。
最大公约数则用辗转相除法求出。
#includeint main() { int m,n,a=1,b=1; scanf("%d%d", &m, &n); int i = m, j = n; while(b!=0)//这里以9 7为例 { a = m / n;//a=1 //a=3 //a=2 b = m % n;//b=2 //b=1 //b=0 m = n; //m=7 //m=2 //m=1 n = b; //n=2 //n=1 }//辗转相除法 最后余数为0时最后被除数m就是最大公约数 printf("%d", i * j / m); return 0; }
3.利用 k/m=i k/n=j
k=mi 则mi/n=j 所以当mi能整除n时mi为最小公倍数
#includeint main() { int m, n,i=1; scanf("%d%d", &m, &n); while (m * i%n != 0) { i++; } printf("%d", m * i); return 0; }
总结:后两种方法效率更加高效,第三种代码量更少。



