中M2019春C入门和进阶练习 7-51 求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>
/*计算并输出不超过n的最大的k个素数以及它们的和。若n以内不够k个素数,则按实际个数输出。*/
int main(){
    int n,k,i,j=0,p=0,sum=0,tmp;
    scanf("%d %d",&n,&k);
    int l[k];
    while(n>1){
        tmp=1;
        for(i=2;i<n;i++){     //判断n是否是素数
            if (n%i==0){
                tmp=0;
                break;
            }
        }
        if (tmp==1){
            sum=sum+n;
            l[j++]=n;
            p++;           //记录已有素数个数
        }
        n--;
        if(p>=k){
            break;
        }
    }
    for (i=0;i<j;i++){
        if (i==0){
            printf("%d",l[i]);
        }else{
            printf("+%d",l[i]);
        }
    }
    printf("=%d\n",sum);
    return 0;
}

​

猜你喜欢

转载自blog.csdn.net/Great_Linlin/article/details/88960709