python 用while求两数之间所有素数个数和总和

问题遇到的现象和发生背景

检查一下有什么问题

问题相关代码,请勿粘贴截图
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)))