给定一个正整数n,找出1~n之间的所有素数。请把已找好的素数存放在列表中,并利用该素数列表来判断用户输入的某个整数是否是素数,用python写出上面的需求
时间: 2024-12-28 21:41:26 浏览: 0
在Python中,我们可以使用Sieve of Eratosthenes算法来找出1到n的所有素数,并将它们存储在一个列表中。这个算法是一种简单而高效的查找素数的方法。以下是相应的代码:
```python
def find_primes(n):
primes = [True] * (n + 1) # 初始化一个布尔数组,所有元素默认为真
primes[0], primes[1] = False, False # 0和1不是素数
# 根据素数性质从2开始遍历,将非素数位置标记为False
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
# 将索引对应的值(实际是数字)存入结果列表
prime_list = [i for i, is_prime in enumerate(primes) if is_prime]
return prime_list
# 测试函数
n = int(input("请输入一个正整数:"))
prime_numbers = find_primes(n)
def is_prime_check(user_input, prime_list):
if user_input < 2:
return "输入的整数小于2,不是素数"
elif user_input in prime_list:
return f"{user_input}是素数"
else:
for prime in prime_list:
if user_input % prime == 0:
return f"{user_input}不是素数,它可以被{prime}整除"
return f"{user_input}可能是素数,因为它不能被小于它的已知素数整除"
user_number = int(input("请输入一个整数检查它是否是素数:"))
result = is_prime_check(user_number, prime_numbers)
print(result)
阅读全文