用Python2.x编写程序生成1000以内所有素数
时间: 2024-09-24 19:01:45 浏览: 36
在Python2.x中,我们可以使用一个简单的算法来生成1000以内的所有素数。这个算法叫做埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是用Python实现的一个版本:
```python
def generate_primes(n):
primes = [True] * (n+1) # 创建一个布尔列表表示范围内的所有数字是否为素数
p = 2 # 首个素数是2
while p**2 <= n:
if primes[p]: # 如果p是素数
for i in range(p**2, n+1, p): # 将p的倍数标记为合数
primes[i] = False
p += 1
# 返回从2到n的素数列表
return [i for i in range(2, n+1) if primes[i]]
# 生成1000以内的素数
primes_under_1000 = generate_primes(1000)
print(primes_under_1000)
相关问题
用python编写 1000以内的素数的代码
以下是用 Python 编写的 1000 以内的素数代码:
```python
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
primes = [i for i in range(2, 1001) if is_prime(i)]
print(primes)
```
这个代码使用了一个 `is_prime` 函数来判断一个数是否为素数,然后使用列表推导式来生成 1000 以内的素数列表,并打印出来。
编写函数,生成10000以内的所有梅森质数。梅森质数是指满足2的p次方减1的形式的质数,其中p是素数。python
编写一个Python函数来找出10000以内的所有梅森质数,你可以参考以下代码:
```python
def is_mersenne_prime(p):
"""
检查是否为梅森质数
"""
# 验证是否为素数
if p <= 1 or (p % 2 == 0 and p != 2): # 除了2外,偶数不是梅森质数
return False
# 对于奇数p,检查2**p - 1是否为质数
mp = pow(2, p, p) # 使用取模运算高效计算
while mp != 1: # 如果mp除以p余数不为1,说明不是梅森质数
mp = (mp * 2) % p
return True
def find_mersenne_primes(limit=10000):
"""
找出10000以内的梅森质数
"""
mersenne_primes = []
for p in range(2, int(limit ** 0.5) + 1): # 只需测试到limit的平方根即可
if is_mersenne_prime(p):
mersenne_primes.append(2 ** p - 1)
return mersenne_primes
# 输出结果
mersenne_primes_10k = find_mersenne_primes()
print(f"10000以内的梅森质数有: {mersenne_primes_10k}")
阅读全文