鱼C论坛

 找回密码
 立即注册
查看: 3722|回复: 6

[已解决]for循环找素数

[复制链接]
发表于 2022-8-6 21:37:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼B站19课最后的找10以内的素数的代码
for n in range(2,10):
    for x in range(2,n):
        if n % x == 0:
            print(n, '=', x , '*' , n // x)
            break
    else:
             print(n,'是一个素数')
代码如上,只是有两点不明白
1.为什么第二个for要缩进(为什么非要嵌套)
2.为什么else不跟if 对齐而跟for对齐,对齐if后run出来奇奇怪怪的??
最佳答案
2022-8-7 07:36:37
1. 我们知道素数就是除了 1 和它本身其他所有都不能被整除的数
第一层是遍历找素数的范围
第二层则对范围内的每个数从 2 到 n-1 每个除一遍 , 看看是否整除 (range 是左闭右开区间)
整除之后就没必要继续这个数的判断, 直接 break
2. 因为素数的判断要在 2 - n-1 所有的数中判断 , 如果每个数都不能整除才是素数
如果放到内层 if 下 , 假设我们的数字是 9 , 从 2 开始除
那么第一次 9 % 2 != 0
所以跳到 else 内打印 9 是素数 , 但是 9 不是素数
问题在于你应该把所有的数能否整除都判断一遍
如果只是一个不能整除万一后面有可以整除的就错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-2 03:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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