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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值