build prime table faster
bool prime[Max]; // 幫助建立質數表 得到只有質數的vector
vector<ll> primeNumber; // 只有質數的vector
void setPrimeTable(){
//for (int i=3; i<Max; i+=2) {prime[i]=true;}
prime[0]=prime[1]=true; // 建表這裡為了少初始化這步,把所有true false的意義顛倒過來了!
prime[2]=false; // 主要是把2丟進 專收集質數的vector裡
primeNumber.push_back(2);
for (ll i=3; i<Max; i+=2) { // 少掉所有偶數的情形,為了少一半的計算,只考慮奇數
if (!prime[i]) {
primeNumber.push_back(i);
for (ll j=3; i*j<Max; j+=2) { // 把所有i的倍數都考慮進去篩掉,但是不考慮偶數的倍數,因為不需考慮
prime[j*i]=true; // 從 3*i,5*i....奇數*i
}
}
}
}