python 利用filer和enumberate函数输出比输入数字小的数字是不是素数
时间: 2024-09-19 17:05:52 浏览: 41
在Python中,我们可以使用`filter()`函数结合`enumerate()`来过滤出比给定数字小的所有素数。首先,我们需要编写一个辅助函数来判断一个数是否为素数,然后遍历列表并应用这个条件。以下是实现步骤:
1. 定义一个判断素数的函数,例如`is_prime(n)`:
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
```
2. 使用`filter()`和`enumerate()`生成素数序列:
```python
def find_smaller_primes(num):
numbers = list(range(num))
primes = filter(is_prime, numbers)
return [i for i, _ in enumerate(numbers) if primes.__contains__(i)]
```
在这个例子中,`enumerate(numbers)`会返回每个数字及其索引,而`primes.__contains__(i)`检查该数字是否在素数序列中。
如果你想找出所有小于给定数字的小于它的素数,你可以像这样调用上述函数:
```python
input_num = 20
smaller_primes = find_smaller_primes(input_num)
print(smaller_primes)
```
阅读全文