我知道a
和c
。如何找到b
lcm(a,b) = c
的最短super().method()
?
答案 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)
必须包含a
和b
的所有素数因子,它们出现在两个数字中的任何一个中的最高倍数。
例如,8 = 2^3
和12 = 2^2 * 3
,lcm(8, 12) = 2^3 * 3 = 24
。
这很容易逆转:查找c
的素数因子(包括它们的多重性),然后检查a
已涵盖哪些因素。 b
必须是剩下的产品。
因此,如果c = 24 = 2^3 * 3
和a = 6 = 2 * 3
,则b
必须为8 = 2^3
。 3^1
已涵盖a
,但a
仅涵盖2^1
,因此b
必须为2^3
。
答案 2 :(得分:0)
如果c
为lcm(a, b)
,c%a=0
然后,
if gcd(a, c/a) == 1:
b = c/a
else
b = c