python计算素数个数
时间: 2024-01-03 15:55:17 浏览: 67
以下是一个简单的 Python 代码,用于计算小于等于给定正整数 n 的素数个数:
```python
def count_primes(n):
if n < 2:
return 0
# 初始化一个布尔类型的列表,用于记录每个数字是否为素数
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*i, n+1, i):
is_prime[j] = False
# 统计素数个数
count = 0
for i in range(2, n+1):
if is_prime[i]:
count += 1
return count
```
这个函数的实现思路是使用埃拉托色尼筛法来标记素数和合数,具体步骤如下:
1. 初始化一个布尔类型的列表,用于记录每个数字是否为素数,将前两个数字(0 和 1)标记为 False。
2. 从 2 开始循环到 $\sqrt{n}$,如果当前数字为素数,则将所有的其倍数标记为合数。
3. 统计布尔类型列表中值为 True 的元素个数,即为素数的个数。
注意,该算法的时间复杂度为 $O(n \log \log n)$,其中 $n$ 是输入的正整数。
阅读全文