今天需要找一个合适的质数,心算、笔算、上网找工具?也许自己写一个更方便,算是紧张工作中休闲娱乐一下,代码比较简陋,性能也差,不建议计算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;
}
摘自:郭月丰的专栏