for x in range(100,1001):
if x<2:
continue
for i in range(2,int(x/2)+1):
if x%i==0:
break
else:
print(x)
我想输出100,到1000内的素数,而且不想用列表,为什么我这样不行啊
加个标志即可,然后第二个for循环的范围也可以改为for i in range(2,int(math.sqrt(x))+1),修改如下:
for x in range(100,1001):
if x<2:
continue
prime=1
for i in range(2,int(x/2)+1):
if x%i==0:
prime=0
break
if prime==1:
print(x,end=" ")
for x in range(100,1001):
if x<2:
continue
for i in range(2,int(x/2)+2):
if x%i==0:
break
if i == int(x/2) + 1:
print(x)
你不应该在i那个循环里打印,按照你的想法代码应该这么写
for x in range(100,1001):
num_flag = True
for i in range(2,int(x/2)+1):
if x%i==0:
num_flag = False
break
else:
continue
if num_flag:
print(x)