python求小于n的质数的个数
时间: 2024-01-25 16:03:10 浏览: 86
可以使用埃氏筛法(Sieve of Eratosthenes)来解决这个问题。代码如下:
```python
def count_primes(n):
if n < 2:
return 0
# 创建一个布尔数组,表示是否为质数
is_prime = [True] * n
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, i):
is_prime[j] = False
# 统计质数个数
count = 0
for i in range(n):
if is_prime[i]:
count += 1
return count
```
在这段代码中,我们首先创建一个布尔数组 `is_prime`,表示是否为质数。初始时,我们将所有数都视为质数。然后,我们从 2 开始,逐个标记非质数。具体地,对于每个质数 $p$,我们从 $p^2$ 开始,将 $p$ 的倍数标记为非质数。最后,我们遍历数组,统计质数的个数,即为所求。
示例:
```python
print(count_primes(10)) # 4
```
注意,这里的 $n$ 不包括 $n$ 自身,即求的是小于 $n$ 的质数个数。如果要包括 $n$ 自身,则需要将 `range(n)` 改为 `range(n+1)`。
阅读全文