编写一个函数输出300至500以内所有素数(即质数)中最大的前10个数之和k与300至500以内所有素数的个数

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:55:02

结果应该是4696 33
#include <algorithm>
#include <cmath>
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>
using namespace std;

void prime(int low,int high,int mid=10)
{
if (low>high || mid<0)
{
cerr<<"error"<<endl;
return;
}

vector< int > temp;
int num=0;

for(;low<=high;++low)
{
int i=2;
for(;low%i && i<=sqrt(low);++i);

if (low!=1 && i>sqrt(low))
{
++num;
temp.push_back(low);
}
}

if (mid>temp.size())
{
mid=temp.size();
}

partial_sort(temp.begin(),temp.begin()+mid,temp.end(),greater< int >());
int sum=accumulate(temp.begin(),temp.begin()+mid,0);

cout<<sum<<" "<<num<<endl;
}

int main()