关于#python#的问题:for i in range(2,int(x/2)+1):

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=" ")


img

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)