歐拉篩(線性篩)模板

時間複雜度接近O(n)

歐拉篩模板 

bool p[MAX_N];
int pr[205];
void Euler() {
    int cnt = 0;
    memset(p, true, sizeof(p));
    p[0] = p[1] = false;    //特例
    for (int i = 2; i < 1000; ++i) {
        if (p[i]) pr[cnt++] = i;    //選出素數
        for (int j = 0; j < cnt && pr[j] * i < 1000; ++j) {
            p[pr[j] * i] = false;    //篩出非素數
            if (i % pr[j] == 0) break;    //重複篩選,跳出循環
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章