這兩天一直再看數論方面的東西,心裡也想了很多的東西,湊著現在有時間,寫寫也整理一下思路,學習數論的第一感覺就是東西多,亂雜,性質定理公式太別多。但是思路理清楚,就好了。在這裡推薦和我一樣數論剛入門的人,看陳景潤寫的初等數論一書,我感覺寫的真不錯,看完後,思路感覺非常的清晰。當然東西也特別多,東西真是一次無法看完呀,但是我感覺有很多的東西非常的有意思,比如說的數論的性質引理定理什麼的第一章一次就給出來的有幾十條的東西,要都記住真的很難,但是有幾個非常有意思。還有matrix 67大神寫的一篇blog也非常的有意思,淺顯易懂,在程式設計師雜誌上也發表了名字叫跨越千年的rsa演算法。
說素數, 首先從素數說起,素數真的是研究數的乙個絕佳的突破口,為什麼呢?根據算術基本定理一下就能想明白了吧???任何數都可以分解成若干個質因數的乘積的形式,而且形式是唯一的如果不考慮因數乘積位置上不同的形式問題的話。
素數第乙個問題就是素數個數的問題,素數究竟是有窮多個還是無窮多個呢?歐幾里德給出了乙個非長漂亮的證明,假設素數有限個,設最大的素數為,p,所以素數為:2、3 、5、 7 .。。。。。。。p現在有這樣乙個數 s = 2*3*5*7*。。。。*p +1,既然有了算數基本定理,那麼這個問題就可以簡化了, 只需要找在所有的質數裡面,有沒有乙個數是s的約數,從s的式子,可以看出s不管除以任何素數 k 都會餘 1,說明s沒有因數,除了它本身s和1之外,說明s為素數,且s > p,但是剛才我們已經假設p為最大的素數,與假設矛盾,故素數為無限個。素數個數的問題,用反證法非常漂亮的給證明了。說完素數,因該還有乙個聽上去相近的概念,就是互素,互素的兩個數不一定都是素數,兩個合數也可能互素比如 9 和16,質數肯定是互素的。那素數的個數是怎麼分布的呢?還有乙個問題在1到n-1這n-1個數裡面有多的數是與n互素的那??其實第二個問題就是尤拉函式phi(n)。第乙個問題其實素數定理已經解決了:
pi(n)/n *lgn = 1 當n為無窮大的時候,pi(n)為< n的素數的個數。
第二個問題其,人已經給出來了,怎麼求?
首先設n = p1^q1*p2*q2**。。。。*pk^qk.那麼phi(n) = n(1-1/p1)(1-1/p2)******(1-1/pk),,然後把每一項的1 移到分子上去 然後把n乘進去就得到了。
phi(n) = (p1^n-p1^(n-1))*(p^2^n-p2^(n-1))*。。。。。(pk^n-pk^(n-1))
= p1^(n-1)(p1-1)*p2^(n-1)(p2-1)*.......*pk^(n-1)(pk-1)。
然後計算機j就能很快的算出來phi(n)了。算phi(n)的時間複雜度大概為ln(n)級別的。
int eu(int n)
} }
if(n > 1)
return ans;
}
但是當算 從 1 到n之間所有數的尤拉函式的時候這個時候就可能會出現tle了,但是有改進的辦法,就是用線性篩選素數的方法,在裡面家幾句話,就可以成為線性篩選尤拉函
數了。呵呵。
int phi[3000010];
int prime[3000010],prime_top = 0;
int not_prime[3000010];
//算 2 到3000000的所有數的尤拉函式。
void build_phi()
for(int j = 0;j
2、由歐幾里德演算法,衍生出來乙個重要的貝祖等式:兩數的最大公約數可以用兩數的整數倍相加來表示
數論學習筆記 NIM遊戲
博弈論的內容。遊戲規則 地上有n堆石子,每人每次可從任意一堆石子裡取出任意多枚石子扔掉,可以取完,不能不取。每次只能從一堆裡取。最後沒石子可取的人就輸了。先手是先操作的人。定理 先手必勝 當且僅當 a1 xor a2 xor a3 0。證明 當所有物品都取光。明顯為a1 xor a2 xor a3 ...
數論 高斯消元學習筆記
q 高斯消元是什麼?聽起來好高階啊?a 二元一次方程組解過嗎?那就是高斯消元。首先對高斯消元做一些準備 q 什麼是線性方程組?a 雞兔同籠方程組 由 m 個 n 元一次方程所構成的方程組。為了簡化表達,做出如下定義 example 假如現有一方程組 beginx 1 x 2 4x 3 17 5x 1...
初等數論筆記
威爾遜 wilson 定理 當 p為質數時 p 1 p 1 1 modp 除了 1 和 p 1之外的數都可以和自己的逆元相乘得到么元 1 其逆定理為,若 p 1且 p 1 1 modp 則 p 為質數 當 p為質數,且 x 與 p互質時 xp 1 1 modp 當 x與 p互質時 x p 1 mod...