用筛法求之n内的素数C语言
时间: 2024-04-10 22:28:27 浏览: 144
输入整数n,输出1~n的素数
你可以使用筛法(埃拉托斯特尼筛法)求解n内的素。以下是一个使用C语言实现的示例代码:
```c
#include <stdio.h>
#includestdbool.h>
void sieveOfEratosthenes(int n) {
// 创建一个布尔数组,用于标记数字是否为素数
bool isPrime[n+1];
for (int i = 0; i <= n; i++) {
isPrime[i] = true;
}
// 从2开始进行筛选
for (int p = 2; p * p <= n; p++) {
// 如果isPrime[p]为true,则p为素数
if (isPrime[p] == true) {
// 将p的倍数标记为非素数
for (int i = p * p; i <= n; i += p) {
isPrime[i] = false;
}
}
}
// 输出所有素数
printf("素数:");
for (int p = 2; p <= n; p++) {
if (isPrime[p]) {
printf("%d ", p);
}
}
printf("\n");
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("小于等于%d的素数有:\n", n);
sieveOfEratosthenes(n);
return 0;
}
```
这段代码中,我们使用了一个布尔数组`isPrime`来标记数字是否为素数。首先将数组中的所有元素初始化为`true`,然后从2开始进行筛选。如果某个数字`p`为素数,则将其倍数标记为非素数。最后输出所有素数。
你可以通过输入一个正整数n来获取小于等于n的素数。希望这可以解答你的问题!如果还有其他疑问,请随时提出。
阅读全文