1.输入一个整数,证明任何偶数都可有两个素数之和表示

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:56:46

#include <iostream>
#include <vector>
#include <iterator>
#include <math.h>

using namespace std;

int next_prime(vector<int>& vPrime)
{
int n = vPrime[vPrime.size() - 1] + 2;
int m = (int)sqrt(2.0*n);
for(int i = n; ; i+= 2)
{
vector<int>::const_iterator itr;
for(itr = vPrime.begin(); *itr <= m && i % (*itr); ++itr);
if(*itr > m)
{
vPrime.push_back(i);
return i;
}
}

}

bool find(vector<int>& vPrime, const int x)
{
int i=0, j=vPrime.size() - 1, m;
while(i <= j)
{
m = (i + j) / 2;
if(x == vPrime[m])
return true;
else if(x > vPrime[m])
i = m + 1;
else
j = m - 1;
}
return false;