首页 > 解决方案 > 关于 Python 中的 Project Euler 问题 7 的问题

问题描述

我一直在研究 Euler 项目的问题 7。我已经把我的Python代码弄好了,但是没有输出,不知道有没有语法和逻辑上的问题。你能帮我检查一下它有什么问题吗?这是原始问题:

通过列出前六个素数:2、3、5、7、11 和 13,我们可以看到第 6 个素数是 13。第 10 001 个素数是什么?

def isprime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
    return True
x = 3
counter = 2
while counter <= 10001:
    if isprime(x):
        counter += 1
        x += 2
    else:
        x += 2
print (x)

标签: python

解决方案


在以下修复后,您的逻辑可以正常工作:

  1. 正确的缩进。
  2. 从最终结果中减去 2。

请注意,您的实施效率低下。但是,它确实有效。

def isprime(n):
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

x = 3

counter = 2

while counter <= 10001:
    if isprime(x):
        counter += 1
        x += 2
    else:
        x += 2

print(x-2)  # 104743

推荐阅读