廢話不多說,直接上代碼:
#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;
}