Algorithm o(1)中的最大公因数?
注:这不是问如何解决O(n)中的GCF 您有两个整数,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读入内存的操作将是渐
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)
。