在Python中判断一个数是否为素数并重复多次,可以通过以下步骤实现:
一、判断素数的函数实现
基础试除法 从2开始遍历到该数的平方根,检查是否存在能整除的数。若存在则不是素数,否则是素数。此方法效率较高,适用于较小范围的数。
```python
import math
def is_prime(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
```
优化试除法
- 跳过偶数(除2外)
- 只检查到平方根
- 使用`math.isqrt()`提高效率
```python
import math
def is_prime_optimized(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(math.isqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
```
二、重复判断多个数
循环输入与判断
使用`for`循环或`while`循环多次获取用户输入,并调用素数判断函数。
```python
def main():
count = int(input("请输入要判断的数的个数: "))
for _ in range(count):
num = int(input("请输入一个正整数: "))
if is_prime_optimized(num):
print(f"{num} 是素数")
else:
print(f"{num} 不是素数")
if __name__ == "__main__":
main()
```
批量处理(可选)
若输入的数较多,可一次性读取所有输入后处理,减少交互次数。
```python
def batch_check(numbers):
for num in numbers:
print(f"{num} 是素数" if is_prime_optimized(num) else f"{num} 不是素数")
def main():
count = int(input("请输入要判断的数的个数: "))
numbers = list(map(int, input("请输入数字,用空格分隔: ").split()))
batch_check(numbers)
if __name__ == "__main__":
main()
```
三、完整示例
```python
import math
def is_prime_optimized(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(math.isqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
def main():
count = int(input("请输入要判断的数的个数: "))
for _ in range(count):
num = int(input("请输入一个正整数: "))
if is_prime_optimized(num):
print(f"{num} 是素数")
else:
print(f"{num} 不是素数")
if __name__ == "__main__":
main()
```
四、注意事项
输入验证: 建议添加输入验证,确保用户输入的是正整数。 性能优化
通过上述方法,可以高效地判断多个数是否为素数,并根据需求进行扩展。