问题描述 输入一个自然数n,求小于等于n的素数之和 样例输入 2 样例输出 2 数据规模和约定 测试样例保证 2 < = n < = 2,000,000
时间: 2024-03-07 07:49:51 浏览: 191
python 输入一个数n,求n个数求乘或求和的实例
以下是使用筛法求解小于等于n的素数之和的Python代码:
```python
def sum_of_primes(n):
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
for j in range(i ** 2, n + 1, i):
is_prime[j] = False
return sum([i for i in range(n + 1) if is_prime[i]])
n = int(input())
print(sum_of_primes(n))
```
代码中先使用一个布尔型数组`is_prime`记录每个数是否为素数,然后从2开始枚举,将其倍数的数标记为不是素数。最后再将小于等于n的素数相加即可。
注意,在求解过程中,只需要枚举到根号n即可,因为如果存在大于根号n的因子,那么一定存在小于根号n的因子。
阅读全文