输入n 输出n以内的所有素数,数据之间用空格隔开; 如果没有正确答案,则输出No number! C语言
时间: 2024-12-17 10:33:02 浏览: 8
在C语言中,你可以使用经典的“埃拉托斯特尼筛法”(Sieve of Eratosthenes)来找出给定范围内(比如n以内)的所有素数。以下是一个简单的示例程序:
```c
#include <stdio.h>
// 函数声明
void sieve_of_eratosthenes(int n);
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 检查输入是否有效
if (n <= 1) {
printf("No number!\n");
} else {
sieve_of_eratosthenes(n);
}
return 0;
}
// 筛选素数函数
void sieve_of_eratosthenes(int n) {
bool prime[n+1]; // 初始化布尔数组
for (int i = 2; i <= n; i++) {
prime[i] = true; // 先假设每个数字都是素数
}
for (int p = 2; p * p <= n; p++) { // 只需要检查到√n
if (prime[p]) { // 如果p是素数
for (int i = p * p; i <= n; i += p) {
prime[i] = false; // 将p的倍数标记为非素数
}
}
}
// 输出素数
for (int p = 2; p <= n; p++) {
if (prime[p]) {
printf("%d ", p); // 若prime[p]为真,则输出p
}
}
printf("\n");
}
```
在这个程序中,我们首先创建一个布尔数组`prime[]`来表示每个数字是否是素数。然后通过循环,将合数(不是素数)的因子标记为`false`。最后,只打印出那些仍然标记为`true`的数字,即素数。
阅读全文