C语言实现求n以内最大的k个素数c

以下是C语言实现求n以内最大的k个素数的代码:

#include 
#include 
#include 
#include 

bool is_prime(int num) { // 判断素数
    int i;
    if(num < 2) {
        return false;
    }
    for(i = 2; i <= sqrt(num); i++) {
        if(num % i == 0) {
            return false;
        }
    }
    return true;
}

void find_k_primes(int n, int k) { // 查找最大的k个素数
    int i, count = 0, max_prime = 0;
    for(i = 2; i <= n; i++) {
        if(is_prime(i)) { // 如果是素数,则更新最大素数和素数个数
            if(i > max_prime) {
                max_prime = i;
            }
            count++;
            if(count == k) {
                break; // 已经找到k个素数,直接跳出循环
            }
        }
    }
    if(count < k) { // 如果没有找到k个素数,则输出所有素数
        printf("There are only %d prime numbers less than or equal to %d: \n", count, n);
        for(i = 2; i <= n; i++) {
            if(is_prime(i)) {
                printf("%d ", i);
            }
        }
    } else { // 找到了k个素数,则输出最大的k个素数
        printf("The largest %d prime numbers less than or equal to %d are: \n", k, n);
        for(i = max_prime; i >= max_prime - k + 1; i--) {
            while(!is_prime(i)) { // 如果当前数不是素数,则向前搜索
                i--;
            }
            printf("%d ", i);
        }
    }
}

int main() {
    int n, k;
    printf("Please enter n and k: \n");
    scanf("%d%d", &n, &k);
    find_k_primes(n, k);
    return 0;
}

在该代码中,我们先定义了一个判断素数的函数 is_prime,然后在 find_k_primes 函数中查找最大的k个素数。在查找的过程中,我们使用了一个计数器 count,记录已经找到的素数个数,以及一个变量 max_prime,记录已经找到的最大素数。当找到k个素数时,我们直接跳出循环;当没有找到k个素数时,我们输出所有的素数。

最后在 main 函数中,我们从输入获取n和k,并调用find_k_primes函数来查找最大的k个素数。

你可能感兴趣的:(编程算法,c语言,算法,数据结构)