如何从lcm(a,b)= c中找到最少的b?

时间:2018-06-02 16:29:26

标签: algorithm lcm

我知道ac。如何找到b lcm(a,b) = c的最短super().method()

3 个答案:

答案 0 :(得分:0)

a = m*d, b = n*d, d = gcd(a,b), so c = lcm(a,b) = mnd;  
Thus n = c/a. Notice that the less d, the less b.  
so we can traverse the factor d of a, such that gcd(a/d, n) = 1.
the least d is what we need, then b = n*d.

答案 1 :(得分:0)

您可以使用prime factorization找到最不常见的倍数。在此处,lcm(a, b)必须包含ab的所有素数因子,它们出现在两个数字中的任何一个中的最高倍数。

例如,8 = 2^312 = 2^2 * 3lcm(8, 12) = 2^3 * 3 = 24

这很容易逆转:查找c的素数因子(包括它们的多重性),然后检查a已涵盖哪些因素。 b必须是剩下的产品。

因此,如果c = 24 = 2^3 * 3a = 6 = 2 * 3,则b必须为8 = 2^33^1已涵盖a,但a仅涵盖2^1,因此b必须为2^3

答案 2 :(得分:0)

如果clcm(a, b)c%a=0

然后,

if gcd(a, c/a) == 1:
    b = c/a
else
    b = c