使用c语言实现利用筛选法找到N以内的所有素数
时间: 2023-10-31 17:04:33 浏览: 112
好的,这是一个计算问题,可以回答。以下是使用筛选法找到N以内所有素数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int n)
{
bool *is_prime = malloc((n + 1) * sizeof(bool)); // 创建一个布尔数组,记录数字是否是素数
for (int i = 2; i <= n; ++i) {
is_prime[i] = true; // 初始化为true,认为所有数字都是素数
}
for (int i = 2; i * i <= n; ++i) { // 遍历2到n的平方根,找出所有素数
if (is_prime[i]) {
for (int j = i * i; j <= n; j += i) { // 如果i是素数,则将i的倍数标记为非素数
is_prime[j] = false;
}
}
}
for (int i = 2; i <= n; ++i) { // 输出所有素数
if (is_prime[i]) {
printf("%d ", i);
}
}
free(is_prime); // 释放内存
}
int main()
{
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("小于等于%d的素数有:\n", n);
sieve_of_eratosthenes(n);
return 0;
}
```
希望这个代码能对您有所帮助。
阅读全文