python求[a,b]区间的质数个数
时间: 2024-09-30 16:11:42 浏览: 23
Python中可以使用一个常见的算法——埃拉托斯特尼筛法(Sieve of Eratosthenes)来计算给定区间内的质数个数。以下是步骤:
1. 创建一个布尔数组`is_prime`,大小为`(b+1)`,初始值全部设为True,表示所有数字都是潜在的质数。
2. 遍历从2到`sqrt(b)`,对于每个质数i,将`is_prime[i*2:i*b+1: i]`都设置为False,因为它的倍数都不是质数。
3. 数组`is_prime`中剩下的True值对应的索引就是区间 `[a, b]` 内的质数。
这里是相应的Python代码实现:
```python
def count_primes_in_range(a, b):
limit = int(b ** 0.5) + 1
is_prime = [True] * (limit + 1)
is_prime[0], is_prime[1] = False, False
for i in range(2, limit):
if is_prime[i]:
for j in range(i * i, limit + 1, i):
is_prime[j] = False
return sum(is_prime[a:a+limit]) - (1 if a == 0 else 0)
# 使用示例
a = 10
b = 50
prime_count = count_primes_in_range(a, b)
print(f"区间 [{a}, {b}] 内的质数个数是:{prime_count}")
阅读全文