【问题标题】:Greatest Common Factor in o(1)?o(1) 中的最大公因数?
【发布时间】:2017-04-26 18:04:50
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

标签: algorithm math language-agnostic


【解决方案1】:

嗯,从技术上讲,这是可能的——例如,通过创建一个预先计算的结果矩阵。但由于内存消耗过大,这几乎不实用。

注意:这种方法有一个重要的先决条件:

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

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

【讨论】:

  • 谢谢。我有一种感觉,通过传统方式是不可能的。不过有趣的想法!
  • 它不必是矩阵,您可以创建一个包含所需数字的所有因子的位掩码,然后对两个位掩码进行and。不过,这将是一张非常大的桌子。
  • 当问题明确指出in 的范围是 0 到无穷大时,这怎么可能?您无法预先计算出无限多的答案。
  • @JohnColeman,如果输入的数字真的是任意的,那么阅读它们的任务就需要O(n)。因此,固定范围是O(1) 的必要前提。
  • @hidefromkgb 这就是为什么 OP 的实际问题显然是不可能的。在某种微不足道的意义上你对实际计算机所做的一切都是O(1),因为我们生活在一个有界存储的宇宙中,但这不是一个非常有用的观点,也不是人们通常所说的@ 987654332@.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多