要求输出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;
}