嵌套循环输出2~100之间的素数

嵌套循环输出2~100之间的素数


注解

if not(i % j):

初学python,看到这行代码有些费解,找到答案后在此分享一下。
在python中false == 0或空,true ==1或非空。
i%j 取余数,当余数是0(能整除)是false,加上not变成true。不能整除相反。
所以这句的意思是如果能整除则进行下面的代码

实例

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

i = 2
while i < 100: #限制i的范围
    j = 2
    while j <= i/j: #限制j的范围
        if not(i % j): #如果能整除则进行下面的代码
            break #能整除则跳出,直接进行i=i+1,不是素数不打印
        j = j + 1 #不能整除则j+1继续

    if(j > (i/j)): #加到j大于根号i还没有找到可被i整除的数,则应该满足素数的要求,打印
        print(i, " 是素数")
    i = i + 1

print ("Good bye!")

运行结果

2  是素数
3  是素数
5  是素数
7  是素数
11  是素数
13  是素数
17  是素数
19  是素数
23  是素数
29  是素数
31  是素数
37  是素数
41  是素数
43  是素数
47  是素数
53  是素数
59  是素数
61  是素数
67  是素数
71  是素数
73  是素数
79  是素数
83  是素数
89  是素数
97  是素数
Good bye!

代码意思

i:2到100的数
j:从2到根号i的数(节约运算量,也可以写成2到i)
第一个循环限制i的范围,第二个循环限制j的范围。
首先判断i不能整除j,则j自增1,继续判断直到超过根号i。
其次判断如果是整除则退出,此时不满足素数要求,因此不打印,非整除退出则满足,则打印。
最后i自增
 

你可能感兴趣的:(python,python,循环嵌套)