python小于等于N的所有素数
时间: 2023-07-08 08:46:06 浏览: 102
python使用筛选法计算小于给定数字的所有素数
可以使用埃氏筛法或欧拉筛法来解决这个问题。以下是一个使用欧拉筛法的 Python 代码:
```python
def get_prime_numbers(n):
is_prime = [True] * (n + 1)
primes = []
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
for j in range(len(primes)):
if i * primes[j] > n:
break
is_prime[i * primes[j]] = False
if i % primes[j] == 0:
break
return primes
```
这个函数接受一个整数n作为参数,返回小于等于n的所有素数。它使用了一个布尔数组is_prime来记录每个数是否为素数,同时使用一个列表primes来记录已知的素数。函数首先将2到n的所有数都标记为素数,然后从2开始遍历,如果遇到一个素数就将其加入primes列表中,同时将其倍数标记为非素数。如果一个数i可以被一个已知的素数primes[j]整除,那么它的倍数i * primes[j]一定在之前的循环中已经被标记为非素数了,因此可以直接跳过。这样,当循环结束时,primes列表中剩下的就是小于等于n的所有素数。
阅读全文