小白求帮助
for i in range(100,1000):j=2
flag=1
while j<i:
if i % j==0:
flag=0
break
j+=1
if flag==1:
print(i,end=" ")
这段代码用于输出100-1000素数
其中的
j = 2
flag = 1
和后面的
flag = 0
flag == 1
有什么作用 j = 3或者 j = 5 输出也是一样的
实在看不懂 看一下下面的注释
for i in range(100,1000):
j=2 #素数只能被1和本身整除,所以需要除一下2到n-1之间所有的数,所以初始值设为2
flag=1 #这是素数与否的标志,当flag为1时,设定该数为素数,打印
while j<i:
if i % j==0: #判断是否为素数,结果就为0就是能被整除
flag=0 #因为能被整除所以不是素数,flag赋值为0
break #不是素数,所以跳出循环,进行下一个数的判断
j+=1
if flag==1: #flag=1是素数,所以打印出来
print(i,end=" ") while j<i:
if i % j==0:
flag=0
break
j+=1
每次循环 j 会 +1,循环条件为 j < i , j 一开始是 j = 2,也就是说,这个循环的 j 就是 2到 i -1
这个循环就是将 i 去除于2到 i-1的数(j),看能不能整除,能就代表 i 不是素数,所以将flag赋值为0
循环结束后判断,flag是否为1,为1,就证明在上面的循环里,i从2到i-1都不被整除,所以是素数,打印
不为1,就代表在上面循环里,i 除于某个2到i-1的数等于0,不是素数,不打印
之后就是for循环下一个i进来 【1】j=2 的含义:将所有的数据(100-1000)从2开始筛查,所以 j=2
【2】flag=1的含义:这是一个标志,只要是筛查到素数了,flag=1,立即打印此素数
【3】flag=0的含义:当检测不是素数时,立即赋值为0,结束当前循环,进入到下一个数值的筛查
【4】flag==1的含义:这是进行判断比较,flag=1时证明是素数,进行打印输出
【5】j=3、j=5 的含义:对素数的判断检测,要让它分别除以任何一个数字,看看有没有余数,所以3、5必不可少
页:
[1]