【问题标题】:How we can find GCD(k + a, k + b) if we already know the GCD(a, b)?如果我们已经知道 GCD(a, b),我们如何找到 GCD(k + a, k + b)?
【发布时间】:2021-05-09 19:44:30
【问题描述】:

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

【问题讨论】:

  • 我投票结束这个问题,因为它是一个数学问题,因此属于 Math Stack Exchange。
  • @gspr 如何在恒定时间内计算某些东西(如果可能的话)是一个与编程相关的问题。数学和计算机科学之间的界限并不清晰。
  • @JohnColeman:我同意数学和 CS 之间的界限是模糊的。关于这个问题是否最适合数学或 CS 堆栈交换,这绝对是一个悬而未决的问题,但我不明白它是如何属于 SO 的。

标签: math mathematical-optimization euclidean-algorithm


【解决方案1】:

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

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

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

那么我们知道O(1)时间

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多