|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def issushu(list1):
count = 0
for shu in list1:
for each in range(2,shu):
if shu == 2:
print(shu)
break
elif shu // each == shu / each:
break
else:
count += 1
if count == shu - 2:
print(shu)
count = 0
break
issushu(list(range(100)))
问一下为什么打印结果没有二
这段代码中没有打印出数字2的原因是因为在判断是否为素数的循环中,对于数字2的判断条件写在了内层循环的判断语句中。当数字为2时,内层循环的范围为[2,2),不会进入循环,因此没有机会打印出数字2。
要解决这个问题,可以将对数字2的判断条件放在外层循环的判断语句中。修改后的代码如下:
- def issushu(list1):
- count = 0
- for shu in list1:
- if shu == 2:
- print(shu)
- continue
- for each in range(2, shu):
- if shu // each == shu / each:
- break
- else:
- count += 1
- if count == shu - 2:
- print(shu)
- count = 0
- issushu(list(range(100)))
复制代码
这样就可以正确地打印出100以内的所有素数,包括数字2。
|
|