国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python求質(zhì)數(shù)的3種方法

2020-01-04 14:26:37
字體:
供稿:網(wǎng)友

本文為大家分享了多種方法求質(zhì)數(shù)python實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

題目要求是求所有小于n的質(zhì)數(shù)的個數(shù)。 

求質(zhì)數(shù)方法1: 

窮舉法: 
根據(jù)定義循環(huán)判斷該數(shù)除以比他小的每個自然數(shù)(大于1),如果有能被他整除的就不是質(zhì)數(shù):

def countPrimes1(self, n):  """  :type n: int  :rtype: int  """  if n<=2:   return 0  else:   res=[]  for i in range(2,n):   flag=0 # 質(zhì)數(shù)標(biāo)志,=0表示質(zhì)數(shù)   for j in range(2,i):    if i%j ==0:     flag=1   if flag==0:    res.append(i)  return len(res)

求質(zhì)數(shù)方法2: 

利用定理:如果一個數(shù)是合數(shù),那么它的最小質(zhì)因數(shù)肯定小于等于它的平方根。所以判斷一個數(shù)是否是質(zhì)數(shù),只需判斷它是否能被小于它開根后的所有數(shù)整除。這樣做的運算會少很多。

 def countPrimes2(self, n):  if n<=2:   return 0  else:   res=[]  for i in range(2, n):   flag=0   for j in range(2, int(math.sqrt(i))+1):    if i % j == 0:     flag = 1   if flag == 0:    res.append(i)  return len(res)

求質(zhì)數(shù)方法3:

利用定理:如果一個數(shù)是合數(shù),那么它的最小質(zhì)因數(shù)肯定小于等于它的平方根。我們可以發(fā)現(xiàn)只要嘗試小于等于平方根的所有數(shù)即可。列舉從 3 到根號x的所有數(shù),還是有些浪費。比如要判斷101是否質(zhì)數(shù),101的根號取整后是10,需要嘗試的數(shù)是1到10。但是可以發(fā)現(xiàn),對9的嘗試是多余的。不能被3整除,必然不能被9整除……順著這個思路走下去,其實,只要嘗試小于根號x的質(zhì)數(shù)即可。而這些質(zhì)數(shù),恰好前面已經(jīng)算出來了,已經(jīng)存在res中了。

 def countPrimes3(self, n):  if n <= 2:   return 0  else:   res = []  for i in range(2, n):   flag = 0   for j in res:    if i % j == 0:     flag = 1   if flag == 0:    res.append(i)  return len(res)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳普湖县| 云梦县| 日土县| 乌拉特前旗| 札达县| 德阳市| 天台县| 崇义县| 廉江市| 辽宁省| 新野县| 揭西县| 建宁县| 新蔡县| 安福县| 怀宁县| 莱州市| 高平市| 咸丰县| 莆田市| 大埔区| 庐江县| 龙门县| 浪卡子县| 灵山县| 长沙市| 双峰县| 两当县| 兴化市| 靖江市| 麻栗坡县| 淳化县| 确山县| 陆川县| 丹棱县| 周至县| 壤塘县| 黄冈市| 台安县| 日土县| 北碚区|