循环输出以指数方式打印

时间:2018-10-10 03:14:46

标签: python python-3.x

当我建立一个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")

我在这里做错了什么?任何帮助将不胜感激,谢谢。

1 个答案:

答案 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以下),这不会有太大的不同。