输入一个整数n,输出不大于n的所有素数(以一个空格间隔)。
时间: 2024-09-23 16:08:45 浏览: 34
3_判断素数_yes_
这个任务通常被称为“求解小于等于给定整数n的所有素数”。在编程中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来有效地找出所有小于或等于n的素数。下面是算法的大致步骤:
1. 创建一个长度为n+1的布尔数组isPrime,初始值全部设置为true,表示0到n之间的所有数字都是潜在的素数。
2. 从2开始,将所有2的倍数标记为非素数(isPrime[2*i] = false)。
3. 遍历数组,对于每个当前未标记为非素数的数i,如果它是素数,则将其所有的倍数(i*i到n,步长为i)都标记为非素数。
4. 遍历结束后,isPrime[i]仍然为true的就是素数。
这里是伪代码示例:
```
for i in range(2, sqrt(n)+1):
if isPrime[i]:
for j in range(i*i, n+1, i):
isPrime[j] = False
result = ""
for i in range(2, n+1):
if isPrime[i]:
result += str(i) + " "
print(result.strip()) // 移除结果末尾的空格
```
阅读全文