设计一个程序 用筛选法求100以内的素数
时间: 2024-11-30 09:21:57 浏览: 22
设计一个用筛选法(也称埃拉托斯特尼筛法)求解100以内的素数的简单程序,可以按照以下步骤:
1. 初始化一个布尔数组isPrime[101],所有元素初始化为True,表示从2到100的每个数字都是潜在的素数。
2. 对于第一个素数2(因为只有2是偶数,其他偶数都不是素数),将isPrime[2]设置为False,然后开始检查下一个奇数(即索引从3开始)。循环直到 sqrt(100),这是因为大于这个数值的因数必然小于它的平方根。
3. 对于每个奇数i(除了2以外),如果isPrime[i]仍然是True,说明它是一个素数。遍历从i的平方到100的所有倍数,将它们的isPrime值设为False,因为这些数都能被i整除,所以不是素数。
4. 循环结束后,isPrime数组中剩下的True值对应的索引就是100以内的素数。
以下是用Python实现的示例代码:
```python
import math
def sieve_of_eratosthenes(n):
is_prime = [True] * (n + 1)
is_prime[0], is_prime[1] = False, False
for i in range(2, int(math.sqrt(n)) + 1):
if is_prime[i]:
for j in range(i*i, n+1, i):
is_prime[j] = False
primes = [i for i, prime in enumerate(is_prime) if prime]
return primes
# 找出100以内的素数
primes_under_100 = sieve_of_eratosthenes(100)
print("100以内的素数有:", primes_under_100)
阅读全文