可汉学院python_18-04-18 回顾 可汗学院:计算数论
關(guān)鍵字
計(jì)算數(shù)論: 時(shí)間復(fù)雜度 空間復(fù)雜度 質(zhì)數(shù) 合數(shù) sieve of eratosthenes ,質(zhì)數(shù)定理 條件概率 貝葉斯理論
睡夢(mèng)——>昨晚:
昨晚由于某些原因失控了,做了一些此刻我認(rèn)為不該做的事情。但,有一點(diǎn)我沒做了:玩王者榮耀。以前的時(shí)候,遇到這種導(dǎo)致"失眠"的情況,我會(huì)選擇王者榮耀來讓自己冷卻。這一點(diǎn),值得我深化:不要再以任何借口去玩王者榮耀,它對(duì)我來說就是毒品。
昨日回顧:
LEARN:
刻意訓(xùn)練難點(diǎn), 組塊化圖書館構(gòu)建復(fù)雜知識(shí)體系,神經(jīng)遞質(zhì)決定了我們做事情的態(tài)度,交替學(xué)習(xí)讓不同知識(shí)組塊間交叉得以有創(chuàng)新的基礎(chǔ)。
SYNTAX Python3 :
輸出,語法:標(biāo)識(shí)符,數(shù)據(jù)結(jié)構(gòu),操作符,變量
控制流:if while.for , 函數(shù):5種參數(shù)
模塊
今日回顧:
計(jì)算數(shù)論:
時(shí)間復(fù)雜度 空間復(fù)雜度
考慮時(shí)間(運(yùn)行布數(shù))和空間(存儲(chǔ))隨著數(shù)據(jù)的增大或者增多所帶來的變化。
時(shí)間復(fù)雜度大致有以下:
O(n) = 1, lnx, x xlnx , x^2, x^3....
質(zhì)數(shù) 合數(shù)
質(zhì)數(shù)(prime):
任何大于1的整數(shù),如果只能被1和它自身整除,則為質(zhì)數(shù)(素?cái)?shù)),換句話說,除了1和它自身,質(zhì)數(shù)無其他因數(shù)。
簡(jiǎn)單質(zhì)數(shù)如下:2 3 5 7 11.....質(zhì)數(shù)有無限個(gè)。
除2以外,質(zhì)數(shù)都是奇數(shù)。——> 除2以外,偶數(shù)都不是質(zhì)數(shù)。
除2和3以外,其他所有的質(zhì)數(shù)都滿足 6k+1,6k-1 (或者6k+5),且k>1,k為整數(shù)。
合數(shù)(composite)
對(duì)于大于一的正整數(shù),不是質(zhì)數(shù)就是合數(shù)。
合數(shù)至少有四個(gè)因數(shù)。
任何合數(shù)都能被分解為多個(gè)質(zhì)數(shù)相乘。
合數(shù)=質(zhì)數(shù)x質(zhì)數(shù)x質(zhì)數(shù)
質(zhì)數(shù)判定
對(duì)于一個(gè)給定的正整數(shù)N,如何判定其為質(zhì)數(shù)(合數(shù))?
2到Root(N)區(qū)間,不存在任何一個(gè)整數(shù)能整除N,則N為質(zhì)數(shù)(更容易理解:在這個(gè)區(qū)間,只要存在一個(gè)整數(shù)能整除N,則N為合數(shù))
偽代碼(以下Root(N) 表示N的平方根):
Def is_Prime(N):
flag = 0
For num from 2 to Root(N):
IF num能整除N
flag = 1
break
IF flag = 0
print N為質(zhì)數(shù)
Else
print N為合數(shù)
總結(jié)一下存在任何一個(gè) 就成立 與 不存在任何一個(gè)才成立的代碼思路:
flag = 0
for 循環(huán)
if conditionTrue
flag = 1
break
if flag = 0
print 不存在任何一個(gè)元素符合循環(huán)條件
else
print 只要有一個(gè)元素符合循環(huán)條件
考慮到時(shí)間復(fù)雜度,優(yōu)化:
3到Root(N)區(qū)間,沒有任何一個(gè)奇數(shù)能整除N,則N為質(zhì)數(shù):
Def is_Prime(N):
flag=0
For num from 2 to Root(N), step=2 :
IF num能整除N
flag=1
break
IF flag=0
printN為質(zhì)數(shù)
Else
print N為合數(shù)
具體實(shí)現(xiàn)請(qǐng)點(diǎn)擊
sieveoferatosthenes:
埃拉托斯特尼篩 :
一個(gè)簡(jiǎn)單的篩選100以內(nèi)素?cái)?shù)的方法:
畫一個(gè)10*10表格,去掉1
去除2的倍數(shù)
所有的偶數(shù)都不是質(zhì)數(shù)/素?cái)?shù),所以去掉2的倍數(shù)(另一個(gè)角度是2的倍數(shù)2N 可由除1與2N外的其他質(zhì)數(shù)相乘而得)
去除3的倍數(shù),同2
去除5的倍數(shù),7的倍數(shù)
剩余的數(shù)便是所有100以內(nèi)的質(zhì)數(shù)
-(補(bǔ)充:判斷一個(gè)數(shù)是不是質(zhì)數(shù),100為例
) 判斷整除范圍,100^(1/2)=10,from2to10(此處可以考慮兩個(gè)集合,①10作為分界點(diǎn):10*10 ,若10左邊的某個(gè)數(shù)能整除100,則商一定在10的右邊。換句話說,判斷是否為質(zhì)數(shù)轉(zhuǎn)化為判斷100是不是合數(shù),而合數(shù)很容易判斷,只要100能被除了1與100的某一個(gè)數(shù)整除,就可以判定他是合數(shù)。根據(jù)①可知我只需要考慮2到10之間的數(shù)就可以。
更進(jìn)一步,只需要考慮2到10之間的質(zhì)數(shù)能否整除。)
其實(shí)以上去除倍數(shù) 可歸結(jié)為去除10( 為100的平方根 )以內(nèi)所有質(zhì)數(shù)的倍數(shù)
靈感:快速查找N^2 范圍內(nèi)的所有質(zhì)數(shù)
先做一個(gè)N*N的表格,去掉1
用類似的方法找到N以內(nèi)的所有質(zhì)數(shù)(根號(hào)N
根號(hào)N的表格 )
去除N以內(nèi)所有質(zhì)數(shù)的倍數(shù),剩下的便是質(zhì)數(shù)
應(yīng)用:10以內(nèi)的質(zhì)數(shù)很容易記住:2 3 5 7
100以內(nèi)的根據(jù)1010表格
10000以內(nèi)的根據(jù)100100表格
偽代碼:
# 根據(jù)埃拉托斯特尼篩,篩選整數(shù) n*n 以內(nèi)的所有質(zhì)數(shù)
List = range(n*n)
For num from 2 to n:
標(biāo)記n*n以內(nèi)所有num的倍數(shù)(2倍及2倍以上)為marked
unmarked便是所有的質(zhì)數(shù)
質(zhì)數(shù)密度曲線(需要再認(rèn)真看一邊視頻)
質(zhì)數(shù)數(shù)量(縱軸)——篩選空間N(橫軸)曲線:
當(dāng)N越來越大,趨向于無窮大時(shí),其曲線無限接近y=ln(x)的曲線
質(zhì)數(shù)密度= 質(zhì)數(shù)數(shù)量/篩選空間
1/ln(x)
質(zhì)數(shù)定理
當(dāng)N無窮大時(shí),
條件概率
P(A|B)= P(AB)/P(B)
推導(dǎo)
P(AB)=P(A|B)/P(B)
P(BA)=P(B|A)/P(A)
因?yàn)?/p>
P(AB)=P(BA)=P(A∩B)
所以
P(A|B)/P(B)=P(B|A)/PA
所以P(A|B) / P(B|A) = P(A) /P(B)
P(A|B)條件概率:在 B發(fā)生的情況下,A發(fā)生的概率
P(AB) 聯(lián)合概率,A與B同時(shí)發(fā)生的概率
貝葉斯理論
總結(jié)
以上是生活随笔為你收集整理的可汉学院python_18-04-18 回顾 可汗学院:计算数论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟ic设计工程师面试总结
- 下一篇: websocket python爬虫_p