5-36 求n以内最大的k个素数以及它们的和 (20分)
本题要求计算并输出不超过n的最大的k个素数以及它们的和。
输入格式:
输入在一行中给出n(10≤n≤10000)和k(1≤k≤10)的值。
输出格式:
在一行中按下列格式输出:
素数1+素数2+…+素数k=总和值
其中素数按递减顺序输出。若n以内不够k个素数,则按实际个数输出。
输入样例1:
1000 10
输出样例1:
997+991+983+977+971+967+953+947+941+937=9664
输入样例2:
12 6
输出样例2:
11+7+5+3+2=28
//
#include <stdio.h> #include <stdlib.h> int main() { int number[10001]; int i,j; for(i=0;i<=10000;i++) number[i]=i; number[0]=number[1]=0; for(i=2;i<=10000;i++) { if(number[i]) { for(j=2*i;j<=10000;j+=i) { number[j]=0; } } } double result=0; int n,k; int count=0; scanf("%d%d",&n,&k); i=n; int flag=0; while(count<k&&i!=1) { if(number[i]!=0) { if(flag) printf("+"); printf("%d",i); flag=1; result+=i; count++; } i--; } printf("=%.0f\n",result); return 0; }