下面代码输出的结果只有 [2, 3] ,不知道哪里写的不对。
list = [] #最后输入质数的列表
listCheck = [] #中间用来检查的列表
for i in range(2,101):
for j in range(2,i):
m = i % j
listCheck.append(m) #把求余数的结果装到listCheck中
n = listCheck.count(0) #判断listCheck有几个0
if n < 1:
list.append(i)
else:
break
print(list)
你的listCheck = []定义在第二行,而执行完i=2的时候,你的listCheck = [],此时满足第8行的n<1,list=[2]。但是执行完i=3的时候,listCheck=[1];此时n=1,list=[2,3]。接着在执行i=4的时候,你的执行listCheck=[1,0,1],n=1,就第10行的else后break退出。所以你的结果就只有2个。修改就是要每执行完一个i,listCheck要清空一次,且不满足条件应该是continue执行下一个i,而不是break退出。
#试试这个,不需每个数都去通过判断是否有多余两个的因数,只需要开辟一个数组
#,保存每个因数相乘的下标为1,那么数组里面剩下为0的就是质数了。
p=[0]*1000
res=[]
for i in range(2,100):
for j in range(2,int(100**0.5)):
p[i*j]=1
for i in range(2,101):
if p[i]==0:
res.append(i)
print(res)
li = []
for i in range(2,101):
for t in li:
if i % t == 0:
break
else:
li.append(i)
print(li)
list = []; for i in range(2,101): bhas = 0; for j in range (2,i): m = i % j; if (m==0): bhas = 1; break; if (bhas): continue; list.append(i); print(list);
你这样试试呢