今天需要找一個合適的質數,心算、筆算、上網找工具?也許自己寫一個更方便,算是緊張工作中休閒娛樂一下,代碼比較簡陋,性能也差,不建議計算100,000以上的質數
view plain
#include <vector>
#include <conio.h>
void Prime(int max)
{
std::vector<bool> 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 <max> 計算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;
}
摘自:郭月豐的專欄