目标:
输入 n(10≤ n ≤10000) 和 k(1≤ k ≤10),求 n 以内最大的 k 个素数,按降序排列并将和输出在最后。
程序实现 :
#include <stdio.h>
int main(){
int n,k;
scanf("%d %d",&n,&k); //输入N,K
int b=2,a=0,c[1300],d[k],x=0,m=0;
while(b<=n){ //找出2到N内的所有素数
for(int i=2;i<b;i++){
if(b%i==0){
++a;
}
}
if(a==0){
c[x]=b; //并把素数存入到数组C[]中
x++;
}
else
a=0;
++b;
}
for(int i=1;i<k+1 && x>=1;i++) //输出后面的K个素数
{
x--;
printf("%d ",c[x]);
m+=c[x]; //求和
}
printf("%d",m);
}
运行结果为:
50 5
47 43 41 37 31 199