在Python范围内找到质数



我应该编写一个程序以更改字符串,如果该位置编号不是素数,但我似乎无法弄清楚如何做出第一个位置,例如位置2,Prime,并将其余的位置可以排2次,然后变成N。下面是我目前拥有的,我是一个错误。如果有人可以帮助我,我真的很感激。谢谢你

while True:
    number = int(input("Enter a number greater than 10: "))
    if number < 10:
        print("Invalid input. Try again")
    else:
        break
n_list = ["P"] * (number + 1)
n_list[0] = "N"
n_list[1] = "N"
for i in range(n_list):
    if int(n_list[i]) % 2 == 0:
        n_list[i] = "N"
print(n_list)

首先,您可能会遇到错误,因为范围需要一个整数而不是生成器,而是尝试for i in n_listfor i in range(len(n_list))。至于问题的方法,您不需要从2到n循环到n,有一个更聪明的方法。但是,我们不是在这里为您解决这个问题,而只是指导您找到最终可能出现的错误。话虽如此,祝您好运!

ps:更多的指导eratosthenes的筛

编辑:我指的是

TypeError: 'list' object cannot be interpreted as an integer

我不想给您您的作业答案,但我确实想提供帮助,以便我会指导您一点。

我看到了您提供的2个问题。首先,您在范围内使用不正确的变量。您想要一个数字,而不是列表。

第二,您无法比较" P"是否均匀分配2.您只能检查一个数字。

希望这会有所帮助。

编辑:要澄清,还有更多问题,但是这两个会出现错误。

最新更新