用户输入一个正整数N,计算并输出不大于N的最大素数。
时间: 2023-05-11 22:03:56 浏览: 133
输入整数n,输出1~n的素数
以下是C知道的回答:
可以使用质数筛法来解决这个问题。具体步骤如下:
1. 创建一个长度为N+1的布尔数组isPrime,初始化为true。
2. 从2开始遍历到N,如果isPrime[i]为true,则将i的所有倍数(除了i本身)的isPrime值设为false。
3. 遍历结束后,isPrime中为true的下标即为不大于N的所有素数。
4. 找到最大的素数并输出即可。
以下是代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
int main() {
int n;
printf("请输入一个正整数N:");
scanf("%d", &n);
bool isPrime[n+1];
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
for (int j = i*2; j <= n; j += i) {
isPrime[j] = false;
}
}
}
int maxPrime = 2;
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
maxPrime = i;
}
}
printf("不大于%d的最大素数为%d\n", n, maxPrime);
return 0;
}
```
希望能帮到您!
阅读全文