python找出n以内(即小于等于n)的所有素数。
时间: 2024-12-09 12:16:22 浏览: 6
Python 代码可以使用 "试除法"(也称作 "筛选法")来找出 n 以内所有的素数。这种方法从 2 开始遍历,将每个数视为候选素数,然后检查它能否被之前的素数整除,如果能被整除,则它不是素数,否则它是素数。以下是简单实现:
```python
def find_primes(n):
primes = [] # 存储素数的列表
sieve = [True] * (n + 1) # 初始化一个布尔数组
# 0 和 1 不是素数
sieve[0] = sieve[1] = False
# 遍历到 sqrt(n) ,因为大于 sqrt(n) 的合数一定能找到小于它的因子
for i in range(2, int(n ** 0.5) + 1):
if sieve[i]: # 如果 i 是素数
# 更新它的倍数为非素数
for j in range(i * i, n + 1, i):
sieve[j] = False
# 将找到的素数添加到列表中
for i in range(2, n + 1):
if sieve[i]:
primes.append(i)
return primes
n = int(input("请输入一个数字 n: "))
result = find_primes(n)
print(f"在 {n} 以内的素数有: ", result)
```
这段代码利用了 "素数筛法" 的原理,效率较高。
阅读全文