日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

费马小定理入门

發布時間:2024/4/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 费马小定理入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

費馬小定理新手入門+總結

縱有疾風起

前言

最近新手的我做了幾個和快速冪有關的題目,發現他們還經常和費馬小定理聯系在一起,所以有必要寫一篇文章來總結一下費馬小定理,以便后面更好的學習。

內容介紹

費馬小定理是數論中的一個重要定理,再1636年提出。

?核心:如果p是一個質數,并且整數a不是p的倍數,則有公式:\(a^{p-1}\equiv1(mod\ p)\)

定理應用

那么問題來了,這個定理該怎么應用呢?

這里舉一個題目來進行說明。

Sum HDU - 4704

這個題目大體的意思是說輸入一個數N,求N被拆分成若干個正整數的結果,注意 1+2 和 2+1算作兩種。N很大,需要使用數組進行存儲。

輸出的結果可能很大,需要mod 1e9+7,注意這個數是一個質數,正好符合費馬小定理的要求。

題目解答

  • 隔板原理+組合數求和公式

    \(1-N\)有N個元素,每個元素代表一個,分成K個數,即在\((N-1)\)個空擋里放置\((K-1)\)塊隔板(最多放置N-1個擋板)。

    即求組合數\(,C(0,N-1)+C(1,N-1)+...+C(N-1,N-1)\)的和,根據二項式定理,這個和為\(2^{n-1}\)

  • 使用費馬小定理

    因為N很大,所以需要使用費馬小定理來進行降冪

    \[ 2^{n-1}mod(p)=2^{n-1-k(p-1)+k(p-1)}mod(p)=2^{n-1-k(p-1)}mod(p)*2^{k*(p-1)}mod(p) \tag{2.1} \]

    又因為p是一個質數,且2和p互質,那么就可以使用費馬小定理了,即

    \[ 2^{k*(p-1)}mod(p)=1 \tag{2.2} \]

    這樣將\(公式(2.2)公式\)帶入到\(公式(2.1)公式\)中得到

    \[ 2^{n-1}mod(p)=2^{n-1-k(p-1)}=2^{(n-1)mod(p-1)} \tag{2.3} \]

    于是計算就變得比較簡單了。

  • 快速冪進行求取\(2^{(n-1)mod(p-1)}\)的值

    快速冪的復雜度為\(O(lgN)\)

  • 代碼展示

    • #include<cstdio> #include<cstring> #include<queue> #include<algorithm>using namespace std; typedef long long ll; const ll mod=1e9+7; const ll maxn=1e8; char str[maxn];ll qpow(ll a) //快速冪的模板 {ll ans=1, base=2; //base存儲基數,這里可以調整不同的數while(a){if(a&1){ans=ans*base%mod;}base=(base*base)%mod; //注意這里如果基數是2的情況下,不能使用base=(base<<1)%mod//因為這里有mod,所以寫法目前是唯一的,就是代碼中的寫法。a>>=1;}return ans%mod; } int main() {while(scanf("%s", str)!=EOF){ll num=0, len=strlen(str);for(int i=0; i<len; i++)num=(num*10 + str[i]-'0') % (mod-1); //這就是對2的指數的化簡,使用費馬小定理printf("%lld\n", qpow(num-1));}return 0;}

    總結

    \[ 2^{p-1}=1(mod\ p) \]

  • 費馬小定理最重要的一點是p(模數)必須是質數,并且與a(底數)互質,只有這樣才能使用。
  • 使用這個定理的目的主要是降低計算的復雜度。
  • 也可以用于某些數論方面的題目,這個目前自己用的比較少,不是很清楚。
  • END

    轉載于:https://www.cnblogs.com/alking1001/p/11196510.html

    總結

    以上是生活随笔為你收集整理的费马小定理入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。