一种方法是计算 gcd 并检查它是否为1。
有更快的方法吗?
答案 0 :(得分:12)
欧几里得算法(计算gcd
)非常快。当从[1, n]
随机统一绘制两个数字时,计算其gcd
的平均步数为O(log n)
。每个步骤所需的平均计算时间是位数的二次方。
有些替代方案表现得稍好一些(即每一步都是数字的次级二次),但它们只对非常大的整数有效。例如,请参阅On Schönhage's algorithm and subquadratic integer gcd computation。
答案 1 :(得分:7)
如果您在的机器上运行,其中除法/余数比班次要贵得多,请考虑binary GCD。