用筛法求之n内的素数C语言
时间: 2024-04-10 21:28:28 浏览: 234
你好!要使用筛法求解n以内的素数,可以使用以下C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
void sieveOfEosthenes(int n) {
// 创建一个尔数组,用于标记数字是否为素
bool prime[n+1];
// 初始化数组,将所有数字标记为素数(true)
for (int i = 2; i <= n; i++) {
prime[i] = true;
}
// 使用筛法,将非素数的倍数标记为非素数(false)
for (int p = 2; p * p <= n; p++) {
if (prime[p] == true) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
// 输出素数
printf("素数:");
for (int p = 2; p <= n; p++) {
if (prime[p] == true) {
printf("%d ", p);
}
}
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 调用筛法函数
sieveOfEratosthenes(n);
return 0;
}
```
这段代码使用了筛法(埃拉托斯特尼筛法)来找出n以内的所有素数。首先,创建一个布尔数组来标记数字是否为素数。然后,使用循环和条件语句,将非素数的倍数标记为非素数。最后,输出所有标记为素数的数字。
希望这能帮助到你!如有任何疑问,请随时提出。
阅读全文