|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大神!
新手小白写了个程序,需要输出100以内所有的素数,冥思苦想试了很多次,成功了但是不知道原理,求帮忙解释一下QAQ
先贴代码
- [code]for i in range(2,101):
- for j in range(2,i):
- if i%j==0:
- break
- else:
- print(i)
复制代码 [/code]
这个程序可以成功输出结果,但是else的位置试了很多次,最后巧合放在这里才成功。求问各位大神为什么else不能对应if?
即
- for i in range(2,101):
- for j in range(2,i):
- if i%j==0:
- break
- else:
- print(i)
复制代码
这样运行输出时数字会不断重复orz但是跟上面那种方式有什么区别呢
你如果把 else 放入 for 循环的 if 下面,每次 for 循环时if 不成立 都会执行一次 else 导致打印了许多无用的结果
而 if 条件是为了判断是否被整除了,若 if 条件成立那么此时说明就不是素数,没有必要继续循环下去,break 退出循环
而 for 和 else 配合使用是只有在 for 循环正常结束(可以理解为不是 break 导致退出的循环)那么就会执行 else 的代码块
而你如果在 for 循环完整结束后没有执行 if 下面的代码块 break ,那么说明这个数确实只被 1 和本身整除,符合素数条件,才执行 for 循环的 else 打印出素数
|
|