废话不多说,直接上代码:
#include <string.h>
#include <iostream>
#include <cmath>
using namespace std;
void primeLessThanN(int n)
{
if(n < 1) return ;
bool *isPrime = new bool[n+1];//动态生成一个数组
memset((void*)isPrime, true, (n +1)*sizeof(bool)); /*将所有元素初始化为true*/
int sqrtOfN = sqrt(n);
isPrime[0] = false;
isPrime[1] = false;
/*算法核心部分 begin>>*/
for( int i = 0; i <= sqrtOfN; ++ i )
if(isPrime[i] == true)
for(int j = i*i; j <= n; j +=i) /*i的倍数肯定不是素数,所以置为false*/
isPrime[j] = false;
/*<<end 算法核心部分*/
int count = 0;
for(int m = 0; m <= n ; m ++)
{
if(isPrime[m] == true)
{
printf("%-5d ",m);
++ count;
if( count % 5 == 0 )
printf("\n");
}
}
printf("\n");
delete isPrime;//释放空间
}
int main (int argc,const char * argv[])
{
primeLessThanN(100);
return 0;
}