我想尽快计算 lcm的2个长整数。
对于前 A = 10 ^ 18 B = 10 ^ 17
我正在为整数做 lcm(a,b)= a * b / gcd(a,b) 但是对于很长时间会出现溢出
计算它的最快方式应该是什么?
答案 0 :(得分:8)
你总是会遇到溢出问题,特别是当你有大量的互质数字时。但要稍微抵消这一点,你可以像迈克尔建议的那样写a * (b/gcd(a,b))
。由于gcd(a,b)
是a
和b
的除数,因此不必担心因整数除法而导致的结果不准确。
答案 1 :(得分:0)
a*b <= c
// When will a*b overflow c?
a > c/b
在您的情况下,c
可以是LLONG_MAX
。