求大于等于x的k个素数 用C语言怎么写
时间: 2024-12-18 16:35:23 浏览: 13
在C语言中,你可以使用“Sieve of Eratosthenes”算法来找寻大于等于x的前k个素数。这是一个经典的寻找素数的算法,这里提供一个基本的代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX 1000 // 可以根据需要调整最大值
bool prime[MAX];
void sieve_of_eratosthenes(int x, int k) {
int count = 0;
for (int i = 2; i * i <= x && count < k; ++i) { // 遍历到√x
if (!prime[i]) { // 如果i是素数
for (int j = i * i; j <= x; j += i) { // 标记i的所有倍数为合数
prime[j] = true;
}
}
}
// 打印大于等于x且未标记为合数的数
for (int num = x; count < k && num <= MAX; num++) {
if (!prime[num]) {
printf("%d ", num);
count++;
}
}
}
int main() {
int x = 10, k = 5; // 要找的最小值和素数数量
sieve_of_eratosthenes(x, k);
return 0;
}
```
这段代码首先初始化一个布尔数组prime,然后使用筛法去除所有非素数。最后,找出大于等于x并且未标记为合数的数并打印。
注意:在实际应用中,如果x和k非常大,可能需要优化算法或者使用更高效的查找方法。
阅读全文