2-3 求n以内最大的k个素数以及它们的和 (25分)

2-3 求n以内最大的k个素数以及它们的和 (25分)

本题要求计算并输出不超过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

代码如下:
素数
曾经记录的素数的不同求解方法
注意:若n以内不够k个素数,则按实际个数输出。

#include
using namespace std;
int isPrime(int n){
	int k = (int)sqrt(n);
	for(int i=2;i<=k;i++){
		if(n%i==0) return 0;
	}
	return 1;
}
int main(){
	int n,k,i,sum=0,flag=0;
	cin >> n >> k;
	for(i=n;i>=2;i--){
		if(isPrime(i)){
			if(!flag) flag=1;
			else cout << '+';
			sum += i;
			cout << i;
			k--;
			if(!k){
				cout << "=" << sum;
				break;
			}
		}
	}
	if(i==1) cout << "=" << sum;
	return 0;
} 

你可能感兴趣的:(数据结构,#,暑假算法训练营)