从网上找打印素数的代码,发现有bug,
现修改如下,打印100万以内的素数:
const int MAX = 1000000;
int prime[MAX], primesize;
bool isprime[MAX];
void getprime(int listsize)
{
memset(isprime, 1, sizeof(isprime));
isprime[1] = false;
primesize = 0;
for (int i = 2; i <= MAX && i <= listsize; i++)
{
if (isprime[i])prime[++primesize] = i;
for (int j = 1; j <= primesize && i*prime[j] < listsize; j++)
{
isprime[i*prime[j]] = false;
if (i%prime[j] == 0)break;
}
}
for (int i = 1; i <= primesize && i < MAX; i++)
{
std::cout << prime[i] << " ";
}
}
int main()
{
getprime(1000000);
getchar();
}