本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
解析:
首先要输入素数的范围且要确保它们的大小关系成立(1≤M≤N≤500),大小关系条件成立后就创造列表变量用来存放素数,最后通过len()函数和sum()函数来计算个数和总和。
关于range(2, int(i ** 0.5) + 1):有兴趣的可以去用数学验证一下,一个个来太慢了,这个可以大大缩短时间,有时间可以拿1到1亿试一试,那速度会很感人。也有可能是我计算机的性能太差了问题。
解题:
# 输入数值范围
m, n = map(int, input().split())
# 判断m和n的大小关系是否成立
if 1 <= m <= n <= 500:
# 条件成立、建立lst列表保存素数,寻找m到n之间的所有素数
lst = list()
for i in range(m, n + 1):
if i == 1:
continue
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
break
else:
lst.append(i)
# 打印素数个数及总和
print(len(lst), sum(lst))
本文介绍了一种算法,用于统计指定范围内(1≤M≤N≤500)的素数数量并计算这些素数的总和。通过有效的算法实现,能够快速找到指定区间内的所有素数。
257

被折叠的 条评论
为什么被折叠?



