按上面的要求,我输出的为啥要多而且还重复
我的思路是 如果一个数除不是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函数的位置有关