求区间素数的问题,输出错误

img

img

img

按上面的要求,我输出的为啥要多而且还重复
我的思路是 如果一个数除不是1和它本身的数能整除(1个即可,break)则不算,其他的数都为素数。

你这和我之前写代码写的一模一样……
你再仔细看看你的代码,你输出的是i%j不等于0的数,也就是说每循环到一次非i因数时都会输出一次,即使i是个非素数
可以用一个布尔型变量或列表,

下面代码仅供参考

qd=int(input())
zd=int(input())
flag=True
list1=[]
for i in range(qd,zd):
    flag=True
    for j in range(2,int(i**0.5)+1):
        if i%j==0:
            flag=False
            break
    if flag==True:
        list1.append(i)
for i in range(len(list1)):
    print(list1[i],end=" ")
    if (i+1)%5==0:
        print()

题目有个细节,输出最后一行的最后一个数后面是没有空格的!

import random

M = int(input())
N = int(input())

odd = []

for i in range(M, N+1):
    flag = 1
    for j in range(2,i):
        if i%j==0:
            flag = 0
            break
    if flag:
        odd.append(i)

if odd:
    for i,n in enumerate(odd):
        print(n, end=' ' if i!=len(odd)-1 else '')
        if i%5==4:
            print('\n', end='')
else:
    print('No exist')

怎么说 你的这个代码的思路本身是有一点点小问题的 比如说你忽略了2也是素数。还有j的区间过大可能会导致超时,其实j在2到i**0.5+1就已经可以达到目的,至于为什么会有重复,和你print函数的位置有关