int prime[maxn];
int visit[maxn];
void Prime(){
    mem(visit,0);    //若为1,则不是素数
    mem(prime, 0);  //将已经搜索到的素数保存下来
    int cnt = 0;    //当前有多少个素数
    for (int i = 2;i <= maxn; i++) {
        if (!visit[i]) {
            prime[cnt++] = i;      
        }
        for (int j = 0; j < cnt && i*prime[j] <= maxn; j++) {
            visit[i*prime[j]] = 1;
            if (i % prime[j] == 0) {
                break;
            }
        }
    }
}