【发布时间】:2009-09-27 11:39:18
【问题描述】:
一种方法是计算它们的 gcd 并检查它是否为 1。
有更快的方法吗?
【问题讨论】:
标签: algorithm number-theory greatest-common-divisor
一种方法是计算它们的 gcd 并检查它是否为 1。
有更快的方法吗?
【问题讨论】:
标签: algorithm number-theory greatest-common-divisor
欧几里得算法(计算gcd)非常快。当从[1, n] 中均匀随机抽取两个数字时,计算它们的gcd 的平均步数为O(log n)。每一步所需的平均计算时间是位数的二次方。
有一些替代方案的性能稍好一些(即,每个步骤的位数都是次二次的),但它们仅对非常大的整数有效。例如,请参阅On Schönhage's algorithm and subquadratic integer gcd computation。
【讨论】:
如果您在一台机器上运行除法/余数比轮班贵得多的机器,请考虑binary GCD。
【讨论】:
gist 吗?