思路:
假设两个整数a,b,现在要求a和b的最小公倍数。
假设k就是a和b的最小公倍数
则k == a * i
k == b * j
即 a 和 b 各乘一个数就可以的到它们的公倍数
也就是说这个k需要满足 a* i == k, 且 k % b == 0 (公倍数能被a,b整除)
这个时候,需要求解的就变成了 i
得到 i 也就得到了 k(最小公倍数)
而这个循环的调整(更新)设置 为 i++
i初始化为1,一旦不满足while中的判断时,得到的 a*i 就是最小公倍数
#include <stdio.h>
int main()
{
long long a = 0;
long long b = 0;
long long i = 1;
scanf("%lld %lld", &a, &b);
while ((a * i) % b != 0)
{
i++;
}
printf("%lld", a * i);
return 0;
}
这里的a,b 类型设置为long long 是为了过牛客网的测试,牛客网会试很多组例子,其中包括很大的数,当a和i 都很大的时候,a*i的值就超过了int所能存储的范围。