素數篩模板

2021-10-25 17:12:04 字數 599 閱讀 3220

/*

素數篩:

1)埃式篩法 o(nlogn)

2)尤拉篩法(線性篩) o(n)

*/#include

using

namespace std;

typedef

long

long ll;

ll st[

1000005];

ll primes[

1000005];

ll n;

ll sh[

1000005

],cnt;

//埃式篩,12被篩兩遍

void

getprime

(ll n)}}

}//尤拉篩法

void

get_prime

(ll n)}}

intmain()

尤拉篩:

第二層迴圈是對素數表中的每個素數迴圈遍歷,每個素數乘上該數i都標記不是素數。

比如當素數表為2 3 5 7 11時,到12了,對每個素數,第乙個素數開始時,12%2==0,直接退出迴圈,避免了重複的判斷(這個判斷12%3 == 0)。

素數篩模板

素數篩的思想很是簡單,就是素數的倍數都是合數。所以打表就好,找到素數,然後把他的倍數都打成合數。餘下的就是真正的素數啦。注意1不是素數 define max 10000 求1 9999的素數 int i,j bool num max memset num,1,sizeof num 先全部弄成素數,注...

模板 線性篩素數

有兩個板子 乙個m個某數字是否為質數的詢問乙個求區間質數個數 題目描述 如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 輸入輸出格式 輸入格式 第一行包含兩個正整數n m,分別表示查詢的範圍和查詢的個數。接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數...

素數篩法(模板)

質數 在大於1的整數中,如果只包含1和本身這兩個約數,那麼就是素數時間複雜度 o sqrt n static boolean prime int n return true 合數只會被它的最小質因子篩掉 時間複雜度 o n static final int n static int prime ne...