判断2到n素数python
时间: 2024-03-24 16:38:43 浏览: 53
非常感谢您的提问!以下是一个用Python实现的判断2到n之间素数的方法,基于埃拉托色尼筛法(Sieve of Eratosthenes):
```python
def prime_numbers(n):
# 初始化一个长度为n+1的布尔类型数组,用于标记每个数是否为素数,初始值都为True
is_prime = [True] * (n + 1)
# 从2开始遍历到n的平方根,如果当前数字i为素数,则将i的倍数(除了i本身)标记为非素数
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
# 遍历结束后,标记为True的数字即为2到n之间的素数
primes = []
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
return primes
```
在这个方法中,我们首先初始化一个长度为n+1的布尔类型数组is_prime,用于标记每个数是否为素数,并把每个数字的初始状态都设置为True。然后,我们从2开始遍历到n的平方根,如果当前数字i为素数,则将i的倍数(除了i本身)标记为非素数,这个过程中只需遍历到n的平方根的原因是,如果n不是素数,那么n一定可以分解为两个因子a和b,其中a和b至少有一个小于等于n的平方根,否则它们的乘积将大于n,与n是a和b的乘积矛盾。因此,我们只需要遍历到n的平方根,就可以判断出n是否为素数。
最后,我们遍历is_prime数组,将标记为True的数字添加到primes列表中,返回primes即可。
阅读全文