【问题标题】:Project Euler #3 with python - MOST EFFICIENT METHOD [closed]Project Euler #3 与 python - 最有效的方法 [关闭]
【发布时间】:2012-12-17 18:21:18
【问题描述】:

我已经解决了这个问题,但我想知道解决这个问题的最有效方法是什么(10 秒以下)。 问题可以在http://projecteuler.net/problem=3找到。

【问题讨论】:

  • “10 岁以下”指的是什么?
  • 你至少应该发布一个指向问题或文本的链接

标签: python


【解决方案1】:

这可能是最快和最紧凑的方法,只需 141 毫秒 并给出答案6857

13195 的质因数是 5、7、13 和 29。

600851475143 的最大质因数是多少?

n = 600851475143
i = 2
while i * i < n:
    while n % i == 0:
        n = n / i
    i = i + 1

print n

代码取自here

【讨论】:

  • 我知道这是旧的,但是为什么输入 100 会返回 25?最大的质因数是 5。
  • @diatrevolo 因为给定的算法对于正方形来说是错误的。尝试 25 或 16 也不起作用。
  • 有趣。 200也一样吗?无论如何,只是好奇,谢谢@Ringil!
  • 抄袭且不正确...
  • 所以,我能理解。将n 除以逐渐变大的i。一旦它被整除,那么,按理说,另一边大约和它一样大。稍微操纵一下,然后……结果就是你的结果。不要检查它是否是质数,但在 euler3 的n 的情况下它恰好是质数。它也恰好是正确的答案。几乎在任何其他n 上都失败了?没问题。
猜你喜欢
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多