用Python写一个程序,求整数n以内(包含n)
时间: 2024-02-07 09:01:59 浏览: 81
的所有素数。
```python
def is_prime(num):
"""判断一个数是否为素数"""
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def prime_numbers(n):
"""求n以内的所有素数"""
primes = []
for i in range(2, n+1):
if is_prime(i):
primes.append(i)
return primes
# 测试
print(prime_numbers(10)) # [2, 3, 5, 7]
print(prime_numbers(20)) # [2, 3, 5, 7, 11, 13, 17, 19]
```
如果对 `is_prime` 函数不理解,可以参考下面的代码来理解:
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, num):
if num % i == 0:
return False
return True
```
这个函数的原理是,对于一个数 `num`,如果它可以被 2 到 `num-1` 中的任意一个数整除,那么它就不是素数,否则它是素数。但是这种方法效率比较低,因为它需要进行 `num-2` 次除法运算。而 `is_prime` 函数中的方法是,只需要进行 `sqrt(num)` 次除法运算,因为如果一个数不是素数,那么它一定可以被 2 到 `sqrt(num)` 中的某个数整除。例如,如果一个数不是素数,那么它一定可以被 2 到 10 中的某个数整除,而 10 = sqrt(100)。因此,使用 `sqrt(num)` 作为循环的终止条件可以提高效率。
阅读全文