找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

新手求解答,关于素数

下面这串代码,第三行就开始看不懂了:
谁能详细分析一下
为什么4、6、8不满足呢?
为什么输出的结果3出现一次,5、7、9分别输出三次呢?
for number in range(3,9):
if number>1:
for i in range(2,number):
if (number % i) == 0:
break
else:
print(number)
回复

使用道具 举报

大神点评(4)

range是不包括最后面那个数字的,比如range(3,10),输出结果是3456789。所以你的这个代码运行结果应该如下

新手求解答,关于素数-1.jpg
回复 支持 反对

使用道具 举报

不对,你这个缩进。。else和for是同一层次的
回复 支持 反对

使用道具 举报

代码的缩进,应该长这个样子的。因为前面也都限制了数字是3到9,所以那个检测是否大于一的if省略了。这样输出的结果就是3、5和7。下次发代码的时候记得把缩进也加上

新手求解答,关于素数-1.jpg
回复 支持 反对

使用道具 举报

(以我后写的代码为例),第一行遍历3到9的数字,第二行遍历2到(num-1)的数字并记为i(range是不包括最后面那个数字的,所以是(num-1)。)
然后用第一行找出的数字,一个一个的除第二行的数字并看余数是不是等于0(%是前面的数字除以后面的数字并输出它的余数)。
剩下的就不解释了。如果有一次循环中余数等于零,就证明有其他因数,这个数字就不是素数,下面就break停止循环。如果循环到最后这个数字没有一次除完之后余数等于零的话,那它就是素数。下面的代码就是输出它
回复 支持 反对

使用道具 举报

说点什么

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