本关任务:输入 n(10≤ n ≤10000) 和 k(1≤ k ≤10),求 n 以内最大的 k 个素数,按降序排列并将和输出在最后。
#include <stdio.h>
#include <iostream>
using namespace std;
bool is_prime(int n)
{
if(n<=1)return false;
for(int i=2;i<=n/i;i++)
if(n%i==0)return false;
return true;
}
int main()
{
int n, k;cin>>n>>k;
int th=0;
int sum=0;
for(int i=n;;i--)
{
if(is_prime(i))
{
if(th)cout<<' ';
th++;
cout<<i;
sum+=i;
if(th==k)break;
if(i==2)break;
}
}
cout<<' '<<sum<<endl;
return 0;
}