LCM为2长整数

时间:2012-04-02 01:37:22

标签: c algorithm

我想尽快计算 lcm的2个长整数

对于前 A = 10 ^ 18 B = 10 ^ 17

我正在为整数做 lcm(a,b)= a * b / gcd(a,b) 但是对于很长时间会出现溢出

计算它的最快方式应该是什么?

2 个答案:

答案 0 :(得分:8)

你总是会遇到溢出问题,特别是当你有大量的互质数字时。但要稍微抵消这一点,你可以像迈克尔建议的那样写a * (b/gcd(a,b))。由于gcd(a,b)ab的除数,因此不必担心因整数除法而导致的结果不准确。

答案 1 :(得分:0)

a*b <= c 
// When will a*b overflow c?
a > c/b

在您的情况下,c可以是LLONG_MAX