Fansblog(威爾遜定理 大數階乘取模)

2021-09-25 16:28:07 字數 1269 閱讀 7197

原題:

題意:

給出乙個質數p

pp,找出小於p

pp的最大的質數n

nn,求出n

nn的階乘模p

pp。(p∈[

1e10,

1e14]

p\in[1e10,1e14]

p∈[1e1

0,1e

14])

解析:

有兩個定理:

威爾遜定理:當p

pp為質數的時候,(p−

2)!=

1(p-2)!=1

(p−2)!

=1質數分布密度:素數分布越來越稀疏,但1e18內任意兩個質數的差不會很大,好像有個人證明了不會超過246。

參考**:

所以,我們用大素數檢測p−1

p-1p−

1以下的數,找到那個質數n

nn。然後答案就是∏i=

n+1p

−2in

v(i)

\prod_^inv(i)

∏i=n+1

p−2​

inv(

i)。**:

#include

using

namespace std;

typedef

long

long ll;

ll modmul

(ll a,ll b,ll n)

//快速積取模 a*b%n

return ans;

}ll modexp

(ll a,ll b,ll n)

//快速冪取模 a^b%n

return ans;

}bool

miller_rabin

(ll n)

//miller-rabin素數檢測演算法

if(x!=1)

return

false;}

return

true;}

ll inv

(ll a,ll mod)

intmain()

ll ans=1;

for(k++

;k<=n-

2;k++

)printf

("%lld\n"

,ans);}

return0;

}

Fansblog 威爾遜定理

題意 給乙個質數 p 找小於 p 的最大質數 q 並求 q modp p,q epsilon 10 9,10 題解 威爾遜定理 乙個數 n 若是質數,則有 n 1 equiv n 1 mod n 於是可以先令 ans p 1 再對 p 1 到 q 的數對 p 求逆元。p 到 q 之間的距離不會超過3...

威爾遜定理

而要解這個問題,使用窮舉或暴搜的方法顯然不可取。若要優雅而巧妙地解決這個問題,就需要用到乙個關於素數的著名結論 威爾遜定理 wilson s theorem 十八世紀中葉,一位英國法官約翰 威爾遜爵士,發現了數論中一種極為罕見的關係 取從1到某個質數所有連續正整數的乘積,例如從1乘到11,即11的階...

威爾遜定理 k p

傳送門 給你乙個素數p,讓你求 k p,其中k為比p小的整數裡最大的素數。例如p 5,則k 3。p 11,則k 7。k k k 1 2 1 input第一行包含乙個整數 t 1 t 10 表示測試樣例的個數.接下來有t行,每行包含乙個素數 p 1e9 p 1e14 output對於每個測試樣例,輸出...