这次写的方法是求N以内的数素。求N以内的数素的方法很多,我猜想这是最快的方法把...而且辅助空间只有N个字节,算是很小的。
如果有更好的方法希望大家提供给我,谢谢
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <iostream>
using namespace std;
bool *GetNPrimeNumber(int N)
{
if(N < 2)
{
return NULL;
}
bool *PrimeNumberArray = (bool *)malloc(N);//存储素数的数组
memset(PrimeNumberArray,1,N);
int i = 0;
PrimeNumberArray[0] = false;
PrimeNumberArray[1] = false;
while(i <= N)
{
if(PrimeNumberArray[i])
{
int j = 2*i;
while(j <= N)
{
PrimeNumberArray[j] = false;
j+=i;
}
}
i++;
}
return PrimeNumberArray;
}
int main(int argc, char* argv[])
{
bool *p = GetNPrimeNumber(100);
for(int i = 0;i < 100;++i)
{
if(p[i])
cout<<i<<" ";
}
return 0;
}