当我建立一个for循环以打印n为1到100的 n ^ 2 + n + 41 的数字时,我看到每个数字的输出重复多次,每个数字输出比以前更多。
k=0
for i in range(101):
i, (i**2 + i + 41)
for p in range(2,(i**2 + i + 41)//2+1):
if((i**2 + i + 41)%p==0):
k=k+1
if(k<=0):
print((i**2 + i + 41), " is prime")
else:
print((i**2 + i + 41), "isn't prime")
我在这里做错了什么?任何帮助将不胜感激,谢谢。
答案 0 :(得分:0)
您的条件应该在内部for循环之外:
k=0
for i in range(1, 101):
i, (i**2 + i + 41)
for p in range(2,(i**2 + i + 41)//2+1):
if((i**2 + i + 41)%p==0):
k=k+1
if(k<=0):
print((i**2 + i + 41), " is prime")
else:
print((i**2 + i + 41), "isn't prime")
也添加了我在评论中提到的循环校正
您可以改进此测试以验证数字是否也是素数,除此之外,在您的情况下(检查素数是否在100以下),这不会有太大的不同。