Justheartyoung 发表于 2020-5-23 17:08:52

大佬稍微做留步 帮小弟解疑

a = list()
import math
for x in range(101,200):
    i = int(x**0.5)
    for y in range(2, i+1):
      if x % y != 0:
            a.append(x)
b = set(a)
print (b)

求(101,200)之间的素数,我哪里出问题了,应该在此基础怎么改正?谢谢

qiuyouzhi 发表于 2020-5-23 17:12:10

没有问题呀?

永恒的蓝色梦想 发表于 2020-5-23 17:12:17

a = list()
import math
for x in range(101,200):
    i = int(x**0.5)
    for y in range(2, i+1):
      if x % y == 0:
            break
    else:
      a.append(x)
b = set(a)
print (b)

永恒的蓝色梦想 发表于 2020-5-23 17:13:59

这么明显的逻辑错误,自己看不出来吗

Hoiste 发表于 2020-5-23 17:42:43

举个例子来说明你的代码问题,102必然不是素数,在你的y遍历中,遍历到4的时候就已经不满足102%4 == 0的条件了,所以就会加入到列表中,这就导致了再100以上的数中每个数总有一个数无法对这个100以上的数取余为零,所以全部都加入到列表了。
楼上的for……else语句功能是若循环全部跑完并且中途没有触发break的情况下执行else语句。

Justheartyoung 发表于 2020-5-24 09:05:47

只有102%4!=0的时候才会加入吧,{:5_104:}
页: [1]
查看完整版本: 大佬稍微做留步 帮小弟解疑