int prime[maxn];
bool is_prime[maxn];
int init()
{
memset(is_prime,true,sizeof(is_prime));
int cnt = 0;
for (int i = 2;i <= 1000000;i++)
{
if (is_prime[i]) //如果是素数
prime[cnt++] = i; //记录在数组中
for (int j = 0; j < cnt; j++)
{
if (i * prime[j] > maxn) //判断是否越界
break; // 过大的时候跳出
is_prime[i * prime[j]] = false; //如果check[i*prime[j]]是已知素数的整数倍那一定是合数
if ((i % prime[j]) == 0) // 如果i是一个合数,而且i % prime[j] == 0
break;
}
}
is_prime[1] = false;
return cnt;
}
暂无评论