|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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出来奇奇怪怪的??
1. 我们知道素数就是除了 1 和它本身其他所有都不能被整除的数
第一层是遍历找素数的范围
第二层则对范围内的每个数从 2 到 n-1 每个除一遍 , 看看是否整除 (range 是左闭右开区间)
整除之后就没必要继续这个数的判断, 直接 break
2. 因为素数的判断要在 2 - n-1 所有的数中判断 , 如果每个数都不能整除才是素数
如果放到内层 if 下 , 假设我们的数字是 9 , 从 2 开始除
那么第一次 9 % 2 != 0
所以跳到 else 内打印 9 是素数 , 但是 9 不是素数
问题在于你应该把所有的数能否整除都判断一遍
如果只是一个不能整除万一后面有可以整除的就错了
|
|