Algorithm o(1)中的最大公因数?

Algorithm o(1)中的最大公因数?,algorithm,math,language-agnostic,Algorithm,Math,Language Agnostic,注:这不是问如何解决O(n)中的GCF 您有两个整数,n和i。我们(在伪码中)如何在恒定时间内计算GCM(n,i),其中n和i具有0->无穷大的域 我见过的唯一解决方案是使用递归或循环。如果可能的话,我想在固定时间内做 谢谢。从技术上讲,这是可能的,是的-例如,通过创建一个预先计算的结果矩阵。但由于疯狂的内存消耗,这很难实现 N.B.:此方法有一个重要的先决条件: n,i∉ [0; ∞),而是n,i∈ [0;M],M∈ [0; ∞)-即值范围任意大,但仍然固定 否则,将n和i读入内存的操作将是渐

注:这不是问如何解决O(n)中的GCF

您有两个整数,
n
i
。我们(在伪码中)如何在恒定时间内计算
GCM(n,i)
,其中
n
i
具有
0->无穷大的域

我见过的唯一解决方案是使用递归或循环。如果可能的话,我想在固定时间内做


谢谢。

从技术上讲,这是可能的,是的-例如,通过创建一个预先计算的结果矩阵。但由于疯狂的内存消耗,这很难实现

N.B.:此方法有一个重要的先决条件:

n,i∉ [0; ∞),而是
n,i∈ [0;M],M∈ [0; ∞)-即值范围任意大,但仍然固定


否则,将
n
i
读入内存的操作将是渐近线性的,使得
O(1)
理论上甚至不可能。

为什么你认为这是可能的?对我来说显然是不可能的。顺便说一句,你问了GCD,但写了GCM——我怀疑这是一个打字错误。可能是重复的感谢。我有一种感觉,通过传统的方式这是不可能的。不过有趣的想法!它不需要是矩阵,你可以创建一个包含所需数字的所有因子的位掩码,并对两个位掩码进行
。这将是一个非常大的表。当问题明确指出
i
n
的范围是0到无穷大时,怎么可能呢?你不能预计算无限多个答案。@johncolman,如果输入的数字是无穷大的话因此,固定范围是
O(1)
@hidefromkgb的必要先决条件,这就是为什么OP的实际问题显然是不可能的。在某种琐碎的意义上,你对实际计算机所做的一切都是
O(1)
因为我们生活在一个存储空间有限的宇宙中,但这不是一个非常有用的观点,也不是人们通常所说的
O(1)