检查两个给定数字是否为互质的最快方法是什么?

时间:2009-09-27 11:39:19

标签: algorithm number-theory greatest-common-divisor

一种方法是计算 gcd 并检查它是否为1。

有更快的方法吗?

2 个答案:

答案 0 :(得分:12)

欧几里得算法(计算gcd)非常快。当从[1, n]随机统一绘制两个数字时,计算其gcd的平均步数为O(log n)。每个步骤所需的平均计算时间是位数的二次方。

有些替代方案表现得稍好一些(即每一步都是数字的次级二次),但它们只对非常大的整数有效。例如,请参阅On Schönhage's algorithm and subquadratic integer gcd computation

答案 1 :(得分:7)

如果您在的机器上运行,其中除法/余数比班次要贵得多,请考虑binary GCD