检查一下有什么问题
m,n=map(int,input().split())
mark=0
s=0
mark1=2
c=1
while m<=n:
while mark1<m:
if m%mark1==0:
c=0
break
else:
mark1+=1
if c==1:
mark+=1
s+=m
m+=1
print("%d %d"%(mark,s))
问题在于,你的代码在进入内层while循环后,一旦c和mark1的值发生改变,就没有机会变回来了。所以后面的数字一直认为是素数(因为mark1永远等于m-1)
在外层循环后面可以加最下面两行代码将c和mark1的值复位
while m<=n:
while mark1<m:
if m%mark1==0:
c=0
break
else:
mark1+=1
if c==1:
mark+=1
s+=m
m+=1
c=1
mark1=2
代码如下,望采纳:
a = int(input('请输入你要查询素数范围的起始数:'))
b = int(input('请输入你要查询素数范围的停止数:'))
num = []
count = 0
for j in range(a-1,b+1):
if j <2:
continue
for k in range(2,j):
if j % k == 0:
break
else:
num.append(j)
count += 1
print(num)
print("共有%d个素数, 总和为%d" % (count, sum(num)))