计算质数

2014-11-23 23:30:09 · 作者: · 浏览: 5

今天需要找一个合适的质数,心算、笔算、上网找工具?也许自己写一个更方便,算是紧张工作中休闲娱乐一下,代码比较简陋,性能也差,不建议计算100,000以上的质数

view plain

#include

#include

void Prime(int max)

{

std::vector isNotPrimes(max + 1);

isNotPrimes[0] = true;

isNotPrimes[1] = true;

isNotPrimes[2] = false;

for (int i = 2; i * 2 <= max; i++)

{

for (int j = 2; ; j++)

{

int product = i * j;

if (product > max)

{

break;

}

else

{

isNotPrimes[product] = true;

}

}

}

for (int i = 0, j = 0, count = isNotPrimes.size(); i < count; i++)

{

if (!isNotPrimes[i])

{

printf("%4d ", i);

j++;

if (j % 10 == 0)

{

printf("\n");

}

}

}

}

int main(int argc, char* argv[])

{

if (argc != 2)

{

printf("%s 计算0 ~ max之间的质数\n", argv[0]);

_getch();

return 0;

}

int max = atoi(argv[1]);

if (max < 2)

{

printf("没有任何结果\n");

_getch();

return 0;

}

Prime(max);

_getch();

return 0;

}

摘自:郭月丰的专栏