求最小公倍数
两个数公有的倍数叫做这两个数的公倍数,其中最小的一个,叫做最小公倍数
首先思考🤔,最小公倍数有可能是两数之间较大的一个。 a , b
若不是,则只能是比两数都大的数。最小公倍数记为m
m%a==0; m%b==0;
假设a是较大的数
如果a能直接被b整除, 那么a就是这两个数的最小公倍数 若不能,就对a逐次加1并赋值给m,直到能被b整除。 例如 a=40 b=20 m=40
根据这个逻辑来编写代码
#include<stdio.h> int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); int m = a > b ? a : b; while (1) { if (m % a == 0 && m % b == 0) { break; } m++; } printf("最小公倍数->%d\n", m); return 0; }
此方法过程太过繁琐,换另一种思考方式
既然是求最小公倍数,一定存在正整数 i j 使下列式子成立
a*i==b*j==m
所以只需要对i逐次加1,直到能被b整除 此时 m==a*i
代码实现如下
#include<stdio.h> int main() { int a = 0; int b = 0; scanf("%d%d", &a, &b); int i = 1; //当a*i%b==0时,不进入循环, //此时最小公倍数就是a*i while (a * i % b) { i++; } printf("最小公倍数->%d\n", a * i); }