设计一个算法,统计整数2—1000范围的素数个数,输出结果编写程序
时间: 2024-09-20 13:09:28 浏览: 49
为了设计一个算法来统计整数2到1000范围内的素数个数,我们可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种常见的寻找所有小于给定数值的素数的有效算法。以下是步骤:
1. 创建一个布尔数组isPrime[1001],初始化所有的元素为true。这个数组将标记每个数字是否为素数,初始值都设为是。
2. 遍历从2开始的所有数字,因为最小的素数就是2。
- 对于每个素数i,将其倍数(i * i 到 1000)标记为非素数,因为它们都可以被i整除。
3. 统计isPrime数组中最后一个仍为true的索引,减去2就是素数的个数。
下面是基于这个算法的Python示例程序:
```python
def count_primes(n):
is_prime = [True] * (n + 1)
is_prime[0], is_prime[1] = False, False
for i in range(2, int(n**0.5) + 1): # 只需遍历到根号n,超过这个点就不再影响结果
if is_prime[i]:
for j in range(i*i, n+1, i): # 将i的倍数标记为非素数
is_prime[j] = False
return sum(is_prime[2:]) # 返回大于2且为素数的个数
# 调用函数并输出结果
count = count_primes(1000)
print(f"2到1000之间的素数有 {count} 个.")
```
阅读全文