python求100以內(nèi)的素?cái)?shù)之和 用python輸出100-200間的素?cái)?shù)?
用python輸出100-200間的素?cái)?shù)?解題追加;#codingutf-8#函數(shù)作用于推測(cè)某一個(gè)數(shù)你是不是正整數(shù)deftest(num):list[]#定義列表,主要用于讀取換算inum-1#祛除本
用python輸出100-200間的素?cái)?shù)?
解題追加;
#codingutf-8
#函數(shù)作用于推測(cè)某一個(gè)數(shù)你是不是正整數(shù)
deftest(num):
list[]#定義列表,主要用于讀取換算
inum-1#祛除本身
whilei1:#去除1
ifnum%i0:#推測(cè)是否是有余數(shù)
(i)#將所以有的能完全平方數(shù)它數(shù)參加列表
i-1
iflen(list)0:#如果不是列表為空,那就是來(lái)表示除了1個(gè)它本身能整除
print(num,end)
#此函數(shù)作用于判斷換算出要確定的所有數(shù)字100~200
deftest2(star_num,and_num):
jstar_num
whilejboth_num:
test(j)
j1
test2(100,200)
print()
現(xiàn)在java的執(zhí)行速度和c 相比誰(shuí)快?你怎么看?
絕大多數(shù)情況下,全是C比JAVA快。前者再編譯成本地機(jī)器語(yǔ)言,后者是需要虛擬機(jī)立刻代碼編譯。前者沒(méi)有垃圾回收,后者有垃圾回收。前者也可以棧上怎么分配資源,后者感情依賴編譯器和虛擬機(jī)(不確定性)。
不過(guò)也要不清楚,在某些時(shí)候,JAVA速度更快。這是建立起在C還是沒(méi)有全精通也可以不想花時(shí)間系統(tǒng)優(yōu)化的前提下。JAVA的虛擬機(jī)有時(shí)非常智能,它也可以自動(dòng)啟動(dòng)對(duì)代碼通過(guò)優(yōu)化。而C編譯器則優(yōu)化空間相對(duì)較少,它的哲學(xué)是把更多的優(yōu)化機(jī)會(huì)交給程序員。
JAVA虛擬機(jī)常見的手動(dòng)系統(tǒng)優(yōu)化有以下這些。自動(dòng)啟動(dòng)把某些資源弄到棧上分區(qū)分配,自動(dòng)出現(xiàn)把某些函數(shù)設(shè)置為內(nèi)聯(lián)。另外更很厲害的,內(nèi)存池。按結(jié)構(gòu)內(nèi)存池時(shí)(先行分區(qū)分配一整塊),內(nèi)存分配會(huì)有一定會(huì)提速,也避兔了內(nèi)存碎片。有緩存技術(shù),把一些很可能你經(jīng)常帶的對(duì)象事前怎么分配,以后隔一段時(shí)間fun的時(shí)候就用太麻煩的。也就是表面上看是fifth了個(gè)對(duì)象,實(shí)際上根本不會(huì)再一次發(fā)生分配內(nèi)存的動(dòng)作,只是再在用全局的一個(gè)可以斷斷續(xù)續(xù)賞識(shí)的對(duì)象指針。另外“寫時(shí)修改”策略。即基因復(fù)制一個(gè)大對(duì)象時(shí),根本不會(huì)完全細(xì)胞克隆(并不是截圖一個(gè)指針),完全是待到突然發(fā)現(xiàn)新對(duì)象變更時(shí)才真正的細(xì)胞克隆。
這些優(yōu)化,用C都給都也可以做,而且還是可以自動(dòng)做,不依賴感編譯器手動(dòng)系統(tǒng)優(yōu)化(JAVA大多數(shù)依賴性太強(qiáng)自動(dòng)優(yōu)化系統(tǒng),沒(méi)法手動(dòng)啟動(dòng))。C要做的那是該棧上分配的就棧上分配,該內(nèi)聯(lián)的就內(nèi)聯(lián)(內(nèi)聯(lián)不了的然后少調(diào)用函數(shù),或書寫宏)。麻煩你,JAVA隱隱都沒(méi)有棧上未分配(除此之外基本是類型)和內(nèi)聯(lián)的概念,是因?yàn)槭强刻摂M機(jī)自動(dòng)出現(xiàn)智能實(shí)現(xiàn)程序的。十分急切的就是內(nèi)存池了,自己實(shí)現(xiàn)程序一個(gè)內(nèi)存池。另另外多用緩存,最好不要什么東西都從堆上新分配。
可是再現(xiàn)實(shí)情況是,多數(shù)C程序員都沒(méi)有這些優(yōu)化能力,或是就算有也沒(méi)有那個(gè)時(shí)間折騰起來(lái),趕工程嘛。還有一個(gè)一些很最重要,性能優(yōu)化后的代碼一般說(shuō)來(lái)可讀性都不怎么好,但代碼變緊張!這就可能導(dǎo)致了,在某些時(shí)候,帶有的代碼,JAVA速度倒是慢了。
之后,還要強(qiáng)調(diào)什么,上面說(shuō)的JAVA有時(shí)侯比C快,情況并不是太多見。有都是每天都發(fā)生了什么在C初學(xué)者身上。但是如果能是C代碼經(jīng)由高度的優(yōu)化,基本上是一定比高度優(yōu)化的JAVA要快的!
我們可以把C比喻成有極為強(qiáng)大功能(光圈,變焦,曝光時(shí)間等)的相機(jī),而JAVA是一定高度非智能的一鍵式傻瓜式相機(jī)。當(dāng)一個(gè)肯定不會(huì)半自動(dòng)調(diào)參的攝影師用專業(yè)相機(jī)時(shí),的確當(dāng)然比一鍵式傻瓜相機(jī)手動(dòng)調(diào)參拍出來(lái)的效果好。而一個(gè)專業(yè)攝影師,則肯定會(huì)拍出來(lái)比傻瓜式相機(jī)效果好。