我已经试着解决ProjectEuler问题3一段时间了。下面的代码仍然不能按我希望的方式工作。在
Question 3: The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
getal = 13195
x = 2
while x in xrange(2,getal):
if getal % x == 0:
num = getal / x
for i in xrange (2,num):
if num % i == 0:
x += 1
break
else:
print num
else:
x += 1
continue
正如你所看到的,为了简单起见,我现在用13195运行它,但最终它必须使用更大的数字。在
我的输出是:
^{pr2}$29比我展示的还要长。 我明白,只要找到一个“I”,这个数字不能被除以,它就打印这个数字。但我不知道如何阻止它这样做。因为最后29是正确的答案,但是它应该只给出这个答案一次和立即。在
当你找到答案时,你需要
break
离开你的while
。在您不是
incrementing 'x'
后的print num
语句。在你应该能够摆脱第二个if语句,如下所示
^{pr2}$您可以将代码简化为下面的代码片段。它使用一个列表来存储所有候选项,如果它们不是质数,则将其删除:
相关问题 更多 >
编程相关推荐