模板 線性篩素數

2021-08-25 08:41:46 字數 1610 閱讀 1371

有兩個板子 乙個m個某數字是否為質數的詢問乙個求區間質數個數

題目描述

如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問(每個數字均在範圍1-n內)

輸入輸出格式

輸入格式:

第一行包含兩個正整數n、m,分別表示查詢的範圍和查詢的個數。

接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數是否為質數。

輸出格式:

輸出包含m行,每行為yes或no,即依次為每乙個詢問的結果。

輸入輸出樣例

輸入樣例#1: 複製

100 523

49197輸出樣例#1: 複製

yesyes

nono

yes

#include#include#include#include#include#include#include#include#include#include#include#include#include#define exp 1e-9

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

using namespace std;

typedef long long ll;

int randomm[3]=;//底數

ll q_pow(ll a,ll b,ll mod)

return ret;

}//快速冪,用來加快計算和防止爆long long

bool witness(ll a,ll n)//miller rabin演算法的重點

//把n-1拆分為2^s*r的形式,這裡j為s,tem為r

ll x=q_pow(a,tem,n);

if(x==1||x==n-1) return true;

while(j--)

//否則判斷等式a^(2jr) ≡-1 mod n 看是否有滿足的 j

return false;

}bool miller_rabin(ll n)

}return true;

}int main()

return 0;

}

題目描述

求區間質數個數

輸入輸出格式

輸入格式:

一行兩個整數 詢問次數n,範圍m

接下來n行,每行兩個整數 l,r 表示區間

輸出格式:

對於每次詢問輸出個數 t,如l或r∉[1,m]輸出 crossing the line

輸入輸出樣例

輸入樣例#1: 複製

2 51 3

2 6輸出樣例#1: 複製

2crossing the line

#includeusing namespace std;

int f[1000001];

bool vis[1000001];

void shai(int n)

}else f[i]=f[i-1];//字首和轉移

}}int main()

}return 0;

}

模板 線性篩素數

如題,給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 輸入格式 第一行包含兩個正整數n m,分別表示查詢的範圍和查詢的個數。接下來m行每行包含乙個不小於1且不大於n的整數,即詢問該數是否為質數。輸出格式 輸出包含m行,每行為yes或no,即依次為每乙個詢問的結果。輸入...

模板 線性篩素數

zzx 做一下 模板 尤拉定理吧 yxy 啥玩意啊oao zzx 噢對了,你會不會算phi yxy 那是啥啊qwq zzx 你會不會寫歐篩 yxy 不會!逃 zzx qwq你先去做一下埃篩模板吧 給定乙個範圍n,你需要處理m個某數字是否為質數的詢問 每個數字均在範圍1 n內 1.暴力無腦篩素數qwq...

素數篩法(素數篩 線性篩)

求素數的方法在現階段可以總結為三種 這種方法最為簡單但效率太低,經過優化時間複雜度最低是o n sqrt n 輸入乙個n,輸出n以內所有素數 include intprime int n if flag 0 優化 printf d i intmain 素數篩法原理 2是素數,那麼2的所有倍數都是合數...