改怎么做这个计算两个非负整数之间所有的素数的和: 请输入第一个非负整数: 2 请输入第二个非负整数: 14 2+3+5+7+11+13=41
根据你的思路给出一版答案如下:
PS:也可以参考其他人的答案哦,了解一下别人的思路有助于自己进步
def isprime(a):
if a<2:
return False
elif a == 2:
return True
elif a % 2 == 0:
return False
else:
for i in range(3, int(a**0.5)+1):
if a % i == 0:
return False
return True
def addprime(a, b):
c = []
for i in range(a, b+1):
if isprime(i):
c.append(i)
return c
print('本程序将计算两个非负整数之间所有素数的和')
while True:
a = int(input('请输入第一个非负整数:'))
b = int(input('请输入第二个非负整数:'))
if 0<a<1000000 and 0<b<100000 and a<=b:
break
print('输入错误')
s = addprime(a, b)
c = [str(i) for i in s]
print(' + '.join(c),'={}'.format(sum(s)))
a=int(input('请输入第一个非负素数:'))
b=int(input('请输入第二个非负素数:'))
if a>b:
a=a+b
b=a-b
a=a-b
def isPrime(x):
if x<2:
return False
for i in range(2,int(x**0.5)+1):
if x%i==0:
return False
return True
s=0
for i in range(a,b+1):
if isPrime(i):
s+=i
print(s)
def isPrime(n):#求素数函数
if n <= 1:
return 0
if n == 2:
return n
if n % 2 == 0:
return 0
i = 3
while i * i <= n:
if n % i == 0:
return 0
i += 2
return n
while(True):
#分别输入两个数
n1 = int(input("请输入第一个非负整数:\n"))
n2 = int(input("请输入第二个非负整数:\n"))
list1 = []
#判断是否为非负整数
if(n1 >= 0 and n2 >= 0):
for i in range(n1,n2):
n3 = isPrime(i)
if(n3 == 0):
continue
else:
list1.append(n3)#求是否为素数
print(sum(list1))
break
else:
#不是提示重新输入
print("请输入一个非负整数!")