C语言素数和的问题求解

要求输出n以内的k个素数以及它们的和。
输入的n和k,分别满足10≤n≤10000和1≤k≤10。求出n以内(包括n)最大的前k个素数(不足k个则有多少输出多少),并从大到小输出,最后输出这些素数的和,每个数之间用1个空格隔开。
这道题怎么做啊

供参考:


#include<stdio.h>
int isPrime(int n)
{
    int i;
    if(n <= 3) return n > 1;
    for(i = 2;i*i <= n;i++)
        if(n % i == 0) return 0;
    return 1;
}

int main()
{
    int n,k,i,cnt=0,sum=0;
    scanf("%d%d",&n,&k);
    for(i = n;i > 0;i--)
    {
        if(isPrime(i))
        {
            printf("%c%d",cnt++ == 0?'\r':' ',i);
            sum += i;
            if(cnt == k) break;
        }
    }
    printf("\nsum=%d",sum);

    return 0;
}