微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果我们已经知道 GCD(a, b),我们如何找到 GCD(k + a, k + b)?

如何解决如果我们已经知道 GCD(a, b),我们如何找到 GCD(k + a, k + b)?

我想知道是否可以在恒定时间内计算上述目标。我需要它来解决 codechef 上的问题。

解决方法

仅知道 gcd(a+k,b+k) 不可能在恒定时间内计算 gcd(a,b)

假设 c,d 是任意两个带有 d < c 的自然数。

a = d - d = 0
b = c - d
k = d

然后我们在 O(1) 时间知道

gcd(a,b) = gcd(0,c - d) = c - d

如果我们可以在 gcd(a+k,b+k) = gcd(c,d) 额外的时间内计算 O(1),那么我们可以在 O(1) 时间内计算所有 gcd,这是不可能的。

说了这么多,当然,在某些感兴趣的情况下,gcd(a,b) 的知识可能会导致 gcd(a+k,b+k) 的计算速度比其他方式更快。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。