任意输入两个正整数,输出这两个数之间的所有素数,c语言
时间: 2024-12-18 13:18:01 浏览: 28
在C语言中,为了找出两个正整数之间所有的素数,我们可以使用经典的“筛法”算法——埃拉托斯特尼筛。以下是简单的步骤和代码示例:
首先,我们需要创建一个布尔数组`isPrime[]`,其中`isPrime[i]`表示从0到n(最大输入数)的所有数字是否是素数。然后,我们从2开始遍历,将每个素数的倍数标记为非素数。
```c
#include <stdio.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
bool isPrime[n + 1];
for (int i = 0; i <= n; i++) {
isPrime[i] = true;
}
for (int p = 2; p * p <= n; 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);
}
int main() {
int num1, num2;
printf("请输入第一个正整数:");
scanf("%d", &num1);
printf("请输入第二个正整数(大于第一个数):");
scanf("%d", &num2);
if (num2 <= num1) {
printf("错误:第二个数应该大于第一个数。\n");
return 1;
}
sieveOfEratosthenes(num2 - 1); // 我们只需要找到num1到num2之间的素数
return 0;
}
```
阅读全文