想问一下为什么素数这个程序为什么不打印2
我想看看循环之间的关系就把代码改了一下,可是为什么不打印2,而是从3开始呢 本帖最后由 柿子饼同学 于 2022-7-31 13:13 编辑你看看循环 , 当 n == 2 时, 内层的 x 也是 2
这样就 n % x == 0
你这有问题啊 , 怎么重复打这么多次
一般判断要放在第二层循环外面吧 , 不然怎么知道到底是不是
看下我的代码isfind = True # 如果是素数就为 True, 打标记的思想还是挺常见的
for n in range(2, 10):
isfind = True # 每次循环初始化
for x in range(2, int(pow(n, 0.5)) + 1):# 这里只需要循环 2 - 根号n 次, 多了浪费
if not (n % x): # 当 n % x == 0 时, not 0 == True, 就是你的那个判断的意思
isfind = False # 如果被整除, 就不是素数
break # 退出
if isfind: # 注意, 这里是第二层循环体外面, 如果上面判断都没过, 就是素数
print(n, '是一个素数')
else: # 不然就不是素数
print(n, '=', x, '*', n//x)
# 结 束~
你的方法很好,可是我还是不懂为什么没有打印关于2的任何语句,明明if 还是else里面都有打印的命令 sjl的好朋友 发表于 2022-7-31 16:35
你的方法很好,可是我还是不懂为什么没有打印关于2的任何语句,明明if 还是else里面都有打印的命令
因为内层循环的range(2, n)在n=2时就变成了range(2, 2),而range(2, 2)的长度为0
页:
[1]