列出N以内所有素数:输入一个大于2的整数,输出该数内所有素数,c语言
时间: 2024-10-24 15:18:32 浏览: 1
在C语言中,我们可以使用Sieve of Eratosthenes(埃拉托斯特尼筛法)算法来列出小于给定数N的所有素数。这是一种简单而有效的找到一定范围内素数的方法。以下是基本的实现:
```c
#include <stdio.h>
// 函数声明
void sieveOfEratosthenes(int N);
int main() {
int n;
printf("请输入一个大于2的整数: ");
scanf("%d", &n);
// 确保输入大于2
if (n <= 2) {
printf("请输入一个大于2的整数。\n");
return 0;
}
sieveOfEratosthenes(n);
return 0;
}
// Sieve of Eratosthenes函数
void sieveOfEratosthenes(int N) {
// 初始化布尔数组表示是否为素数
bool isPrime[N+1];
for (int i = 2; i <= N; i++) {
isPrime[i] = true;
}
// 遍历从2到√N,将非素数标记为false
for (int p = 2; p * p <= N; p++) {
// 如果isPrime[p]还未被改变,说明p是素数
if (isPrime[p]) {
// 将p的倍数标记为非素数
for (int i = p * p; i <= N; i += p) {
isPrime[i] = false;
}
}
}
// 输出所有的素数
for (int p = 2; p <= N; p++) {
if (isPrime[p])
printf("%d ", p); // 值得注意的是,在输出素数时不需要考虑是否为N本身,因为题目要求N以内
}
}
```
当你运行这个程序并输入一个大于2的整数N,它会打印出N内的所有素数。
阅读全文