繁体   English   中英

使用for循环和break的python中的素数

[英]prime numbers in python using for loop and break

我编写了一个python代码来查找2到30之间的素数。但是我的代码没有为2和3进行评估。任何人都可以告诉我这段代码有什么问题吗?

for i in range(2, 30):
    for j in range(2, i-1):
        if ((i % j) == 0):
            print(i, "is not a prime number")
            break
        else:
            print(i, "is a prime number")
        break

你的代码的逻辑是错误的。 else子句应该附加到内部for循环,因此只有在循环耗尽而没有找到除数时才执行它。

for i in range(2, 30):
    for j in range(2, i-1):
        if ((i % j) == 0):
            print(i, "is not a prime number")
            break
    else:
        print(i, "is a prime number")

另请注意,外部循环最多只能运行29,因为上边界不包含在范围内。 内环不包括i - 1 ,但这总体上很好,因为任何非平凡的除数都小于i - 1

内部循环根本不会输入2和3,因为在这些情况下范围将为空。 这也很好,因为会立即输入else子句。

for i in range(2, 30):
    prime = True
    for j in range(2, i-1):
        if ((i % j) == 0):
            prime = False
            # print(i, "is not a prime number")
            break
        # else:
        #  print(i, "is a prime number")
        # break
    if prime:
        print(i, "is a prime number")
    else :
        print(i, "is not a prime number")

解决素数问题有很多在线链接。 为了提高自己搜索自己并理解。 希望这个这个链接可以帮到你很多。 快乐的编码

它不起作用,因为嵌套for声明:

for i in range(2, 30):
    for j in range(2, i-1):

使用range(2, i-1) ,直到i4range返回值:

i = 2 --> range(2, 1) # No value
i = 3 --> range(2, 2) # No value
i = 4 --> range(2, 3) # 2

这是因为range函数返回从第first parameter (包括)到second parameter (未包括)的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM