鱼C论坛

 找回密码
 立即注册
查看: 3200|回复: 3

[已解决]小白求帮助

[复制链接]
发表于 2022-10-13 17:23:27 | 显示全部楼层 |阅读模式
4鱼币
  1. for i in range(100,1000):
  2.     j=2
  3.     flag=1
  4.     while j<i:
  5.         if i % j==0:
  6.             flag=0
  7.             break

  8.         j+=1
  9.         
  10.     if flag==1:
  11.         print(i,end=" ")
复制代码


这段代码用于输出100-1000素数
其中的
j = 2
flag = 1
和后面的
flag = 0
flag == 1
有什么作用 j = 3或者 j = 5 输出也是一样的
实在看不懂
最佳答案
2022-10-13 17:23:28
看一下下面的注释

  1. for i in range(100,1000):
  2.     j=2             #素数只能被1和本身整除,所以需要除一下2到n-1之间所有的数,所以初始值设为2
  3.     flag=1         #这是素数与否的标志,当flag为1时,设定该数为素数,打印
  4.     while j<i:
  5.         if i % j==0:        #判断是否为素数,结果就为0就是能被整除
  6.             flag=0              #因为能被整除所以不是素数,flag赋值为0
  7.             break               #不是素数,所以跳出循环,进行下一个数的判断

  8.         j+=1
  9.         
  10.     if flag==1:             #flag=1是素数,所以打印出来
  11.         print(i,end=" ")
复制代码

最佳答案

查看完整内容

看一下下面的注释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 17:23:28 | 显示全部楼层    本楼为最佳答案   
看一下下面的注释

  1. for i in range(100,1000):
  2.     j=2             #素数只能被1和本身整除,所以需要除一下2到n-1之间所有的数,所以初始值设为2
  3.     flag=1         #这是素数与否的标志,当flag为1时,设定该数为素数,打印
  4.     while j<i:
  5.         if i % j==0:        #判断是否为素数,结果就为0就是能被整除
  6.             flag=0              #因为能被整除所以不是素数,flag赋值为0
  7.             break               #不是素数,所以跳出循环,进行下一个数的判断

  8.         j+=1
  9.         
  10.     if flag==1:             #flag=1是素数,所以打印出来
  11.         print(i,end=" ")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 17:59:38 | 显示全部楼层
  1. while j<i:
  2.         if i % j==0:
  3.             flag=0
  4.             break

  5.         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进来
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 18:17:24 | 显示全部楼层
【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必不可少

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 03:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表