统计给定整数M和N区间内质数的个数并对它们求和。

统计给定整数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)

你可能感兴趣的:(计算机等级二级Python,算法,数据结构,python,大数据,人工智能,计算机等级考试)