统计给定整数M和N区间内质数(素数)的个数并对它们求和。
输入格式:输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:在一行中顺序输出M和N区间内质数的个数以及它们的和,数字间以空格分隔。
输入样例:10 31
输出样例:7 143
思路:需要判断一个数是否质数;需要一个函数来计数;需要一个函数来把所有的质数求和;
程序主体结构:输入整数,计算并分析整数,输出题目要求的格式
质数:2、3、5、7、9、11、13等
import math
#判断一个数是否是质数
def IsPrime(i):
if i==1: #1不是质数
return False
for j in range(2,int(math.sqrt(i))+1): # 将除了1和自己本身(缩小范围,本身开平方)之外的数遍历一遍当做除数
if i%j==0: # 如果i除以j后取得余数等于0,就不是质数(素数)
return False
return True
a=int(input("请输入正整数M:"))
b=int(input("请输入正整数N:"))
count=0 #M和N之间的质数数量,计数
sum=0 #M和N之间的质数之和
for i in range(a,b+1):
if IsPrime(i):
#print(i) #输出质数
count+=1 #统计质数的个数
sum+=i #质数求和
print("质数的数量为:",count,"质数之和为:",sum)
方法2:
m,n=map(int,input().split()) #将输入的值分割后,强制转换为int类型赋值给m和n
sum=0
count=0
for i in range(m,n+1):
lst=[j for j in range(1,i+1) if i%j==0] #把一个数的每个约数存在列表中
if lst==[1,i]: #判断是质数。列表中除了1和本身没有其他数就是质数
count+=1
sum+=i
print(count,sum)