本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
"""欧拉筛选法,时间复杂度为o(n)"""
m,n=map(int,input().split())
prime_list = []
prime = [0] * (n + 1)
cnt = 0
for i in range(2, n + 1):
if not prime[i]:
prime_list.append(i)
cnt += 1
j = 0
while j < cnt and i * prime_list[j] <= n:
prime[i * prime_list[j]] = 1
if i % prime_list[j] == 0:
break
j += 1
sums = 0
cnt=0
i=0
while i<len(prime_list) and prime_list[i]<=n:
if m <= prime_list[i] <= n:
sums += prime_list[i]
cnt+=1
i+=1
print(cnt,sums
参考文献
[1]吕橙,李敏杰.素数判断算法综述与程序实现[J].现代计算机,2020,{4}(19):35-39.