求大于等于x的k个素数 C语言代码
时间: 2024-12-20 14:20:34 浏览: 9
在C语言中,找到大于等于给定整数x的前k个素数是一个常见的算法练习,通常会利用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;
}
// 寻找大于等于x的k个素数
void find_k_primes(int x, int k) {
int count = 0;
int primes[k];
int current_num = x;
while (count < k) {
if (is_prime(current_num)) {
primes[count++] = current_num;
// 考虑优化:从current_num + 2开始,因为下一个数不可能是当前数的倍数
current_num += 2;
} else {
current_num++;
}
}
printf("大于等于%d的%d个素数是:", x, k);
for (int i = 0; i < k; i++)
printf("%d ", primes[i]);
printf("\n");
}
int main() {
int x = 10; // 输入的起点
int k = 5; // 需要寻找的素数数量
find_k_primes(x, k);
return 0;
}
```
在这个代码里,`is_prime` 函数检查一个数是否为素数,而 `find_k_primes` 函数则通过不断增大当前查找的数字并检查其是否为素数的方式来找出指定数量的素数。
阅读全文