【发布时间】:2011-03-27 19:29:58
【问题描述】:
我正在解决 Python 3 中的项目 euler 问题,以此作为学习该语言的一种有趣方式,而我对第三个问题的解决方案我觉得有点时髦。问题是要找到 600851475143 的最大质因数,我用一种相当庞大的方式解决了它,如下所示:
#!/usr/local/bin/python3
# encoding: utf-8
# what is the largest prime factor of whatever the user types
def main():
original = int(input("Input a number: "))
if original == isPrime(original):
print(original, "is prime")
else:
print(factor(original), "is the largest prime factor of", original)
def factor(number):
nummy=2
for num in range(nummy, number):
if (number%num==0 and isPrime(num)==num):
biggest=int(num)
number=int(number/biggest)
nummy = int(biggest+2)
print("so far,",biggest, "is the biggest prime factor...")
if number < biggest:
break
return biggest
def isPrime(value):
for num in range(2, int(value**0.5)+1):
if value%num==0:
return int(value/num)
return value
if __name__ == "__main__": main()
如您所见,在我的“因子”函数中,我尝试更新 for 循环中范围的上限,但它并没有像我预期的那样真正工作,所以我不得不添加 if 数字
有没有办法从循环内部更新for循环的参数?
感谢您对此的任何见解。
【问题讨论】:
-
您无法调整范围。这里有一个提示。使用
while语句而不是for...range...。 -
谢谢!我会试一试并发布结果。
标签: python-3.x