能否用Python编写一段查找质数的代码示例?
时间: 2024-09-25 20:03:29 浏览: 37
当然可以,以下是用Python编写的一个简单函数,用于查找大于等于特定数的最小质数:
```python
def is_prime(n):
if n <= 1:
return False
elif n == 2:
return True
elif n % 2 == 0:
return False
else:
i = 3
while i * i <= n:
if n % i == 0:
return False
i += 2
return True
def find_smallest_prime_greater_than_or_equal_to(num):
smallest_prime = num
while not is_prime(smallest_prime):
smallest_prime += 1
return smallest_prime
# 示例:找出大于等于17的最小质数
min_prime = find_smallest_prime_greater_than_or_equal_to(17)
print(f"最小的大于等于{17}的质数是 {min_prime}")
相关问题
编写程序实现用Eratosthenes筛法寻找给定范围内的素数代码及结果
当然可以。Eratosthenes筛法是一种古老的算法,用于查找一定范围内所有的质数(素数是指只有1和它本身两个正因数的自然数)。以下是使用Python编写的一个简单版本的埃拉托斯特尼筛法:
```python
def eratosthenes_sieve(n):
# 创建一个布尔列表,初始所有数字都标记为True,表示它们可能是素数
primes = [True] * (n + 1)
primes[0] = primes[1] = False # 0和1不是素数
# 遍历到√n,将每个素数的倍数标记为合数
for i in range(2, int(n**0.5) + 1):
if primes[i]:
for j in range(i*i, n+1, i): # 跳过i的平方,因为之前的因子已经被标记了
primes[j] = False
# 输出所有小于等于n的素数
prime_numbers = [i for i, is_prime in enumerate(primes) if is_prime]
return prime_numbers
# 示例,找出1到30之间的素数
result = eratosthenes_sieve(30)
print("1到30内的素数有:", result)
```
当你运行这段代码,会得到1到30内的所有素数:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]。
阅读全文