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

Math 如果我们已经知道GCD(a,b),我们如何找到GCD(k+;a,k+;b)?,math,mathematical-optimization,euclidean-algorithm,Math,Mathematical Optimization,Euclidean Algorithm,我想知道是否有可能在固定时间内计算上述目标。我需要它来解决codechef上的一个问题。只知道gcd(a,b)就不可能在恒定时间内计算gcd(a,b) 假设c,d是d

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

只知道
gcd(a,b)
就不可能在恒定时间内计算
gcd(a,b)

假设
c,d
d
的任意两个自然数

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

gcd(a,b) = gcd(0, c - d) = c - d
如果我们能在额外的时间内计算出gcd(a+k,b+k)=gcd(c,d)
O(1)


话虽如此,在某些感兴趣的情况下,
gcd(a,b)
的知识当然有可能比其他情况下更快地计算
gcd(a+k,b+k)

我投票结束这个问题,因为这是一个数学问题,因此属于数学堆栈交换。@gspr如何在恒定时间(如果可能的话)计算某些东西是一个与编程相关的问题。数学和计算机科学之间的界限并不清晰。@johncolman:我同意数学和计算机科学之间的界限是模糊的。关于这个问题是否最适合数学或CS堆栈交换,这无疑是一个悬而未决的问题,但我看不出它在这方面属于什么。
gcd(a,b) = gcd(0, c - d) = c - d