C语言输出n以内最大的质数
时间: 2024-10-10 08:14:51 浏览: 35
C语言中输出n以内最大的质数可以使用经典的"埃拉托斯特尼筛法"(Sieve of Eratosthenes)。以下是实现这一功能的一个简单示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
void print_largest_prime(int n) {
// 创建一个布尔数组,所有元素初始化为true表示它们都是潜在的质数
bool prime[n+1];
for (int i = 0; i <= n; i++)
prime[i] = true;
// 标记从2到sqrt(n)范围内的每一个合数
for (int p = 2; p*p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p)
prime[i] = false;
}
}
int largest_prime = 0;
// 从2开始查找并更新最大质数
for (int i = 2; i <= n; i++) {
if (prime[i]) {
largest_prime = i;
printf("The largest prime number less than or equal to %d is: %d\n", n, largest_prime);
break; // 找到第一个大于或等于n的最大质数就停止搜索
}
}
}
int main() {
int n;
printf("Enter a value for n: ");
scanf("%d", &n);
print_largest_prime(n);
return 0;
}
```
阅读全文