埃氏筛法求1-n的素数
时间: 2024-06-15 19:03:32 浏览: 108
埃氏筛法是一种用于求解素数的算法,它的基本思想是从小到大遍历每个数,将其所有的倍数标记为合数,最终剩下的未被标记的数即为素数。
具体步骤如下:
1. 创建一个长度为n+1的布尔数组isPrime,并将所有元素初始化为true。
2. 将isPrime和isPrime设置为false,因为0和1不是素数。
3. 从2开始遍历到n,如果isPrime[i]为true,则将i的所有倍数(除了i本身)都标记为false,即isPrime[j * i] = false,其中j >= 2。
4. 遍历完所有数后,isPrime中值为true的下标即为素数。
以下是埃氏筛法求解1-n的素数的示例代码:
```python
def sieve_of_eratosthenes(n):
isPrime = [True] * (n + 1)
isPrime[0] = isPrime[1] = False
for i in range(2, int(n**0.5) + 1):
if isPrime[i]:
for j in range(i * i, n + 1, i):
isPrime[j] = False
primes = []
for i in range(2, n + 1):
if isPrime[i]:
primes.append(i)
return primes
n = 100
primes = sieve_of_eratosthenes(n)
print(primes)
```
阅读全文