【问题标题】:Euler 3 Solution, Why?欧拉 3 解,为什么?
【发布时间】:2013-10-11 23:00:23
【问题描述】:

我是这里的初学者,这个代码理论上应该可以工作,为你们帮助我的好人干杯!

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

600851475143 的最大质因数是多少?

欧拉问题3

欧拉问题3

    def prime(n):
             for i in range(2,n-1):
    if n % i == 0:
        return False
    else:
        return True

         x = input("Enter a number plz")
         d = 0
         while x > 0:
         d = d + 1
         if x % d == 0:
          if prime(d) is True:
            print d

【问题讨论】:

  • 问题是什么? (请详细描述您希望看到什么以及您实际看到的是什么)
  • 问题是你的代码超级慢。想办法减少计算量。

标签: python


【解决方案1】:

以下是对类似问题的回答: Largest prime factor of a number

还有一个更好的解决方案:

def prime_factors(n):
    """Returns all the prime factors of a positive integer"""
    factors = []
    d = 2
    while n > 1:
        while n % d == 0:
            factors.append(d)
            n /= d
        d = d + 1

    return factors


pfs = prime_factors(600851475143)
largest_prime_factor = max(pfs) # The largest element in the prime factor list
print pfs 
print largest_prime_factor

#output
[71, 839, 1471, 6857]

6857

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多