最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)的方法分析

 更新時(shí)間:2017年12月14日 10:23:05   作者:rosboy  
這篇文章主要介紹了Python實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)的方法,結(jié)合實(shí)例形式對(duì)比分析了Python計(jì)算正整數(shù)分解質(zhì)因數(shù)的算法逐步改進(jìn)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)將一個(gè)正整數(shù)分解質(zhì)因數(shù)的方法。分享給大家供大家參考,具體如下:

遇到一個(gè)python編程聯(lián)系題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。

版本一:

開始,沒(méi)動(dòng)腦子就開始寫了,結(jié)果如下代碼

#! /usr/bin/python
# 014.py
import math
number = int(raw_input("Enter a number: "))
while number != 1:
  for i in range(1, number + 1):
    if (number % i) == 0 and i != 1:
      number = number / i
      if number == 1:
        print " %d" %i
      else:
        print " %d*" %i,
      break

結(jié)果,輸入9876543210這個(gè)十位數(shù)的時(shí)候,報(bào)錯(cuò):

Traceback (most recent call last):
  File "./014.py", line 8, in <module>
    for i in range(1, number + 1):
OverflowError: range() result has too many items

版本二:

版本一報(bào)錯(cuò)是因?yàn)閞ange有了太多的項(xiàng),于是想著減少range出的list的項(xiàng)。由于,在判斷一個(gè)數(shù)n是否是質(zhì)數(shù)的時(shí)候,只需從2到n的平方根就行了,所以有了版本二,代碼如下:

#! /usr/bin/python
# 014_1.py
import math
number = int(raw_input("Enter a number: "))
list = []
def getChildren(num):
  print '*'*30
  isZhishu = True
  for i in range(2, int(math.sqrt(1 + num)) + 1): #多加個(gè)1
    if num % i == 0 and i != num :
      list.append(i)
      isZhishu = False
      getChildren(num / i)
      break
  if isZhishu:
    list.append(num)
getChildren(number)
print list

這樣,數(shù)字可以增大很多而不至于報(bào)錯(cuò)。但是 ,也是很有限度的,當(dāng)輸入大數(shù)如 123124324324134334 時(shí),會(huì)導(dǎo)致內(nèi)存不足,殺死進(jìn)程

Traceback (most recent call last):
  File "./014_1.py", line 20, in <module                                            >
    getChildren(number)
  File "./014_1.py", line 11, in getChildren
    for i in range(2, int(math.sqrt(1 +  num)) + 1):
MemoryError

為了追求能對(duì)更大的數(shù)進(jìn)行操作,猜想原因可能是遞歸調(diào)用時(shí)每次都需要建立一個(gè)很大的由range()建立的list,于是想避免range的使用,于是有了版本三:

版本三:

代碼

#! /usr/bin/python
# 014_1.py
import math
number = int(raw_input("Enter a number: "))
list = []
def getChildren(num):
  print '*'*30
  isZhishu = True
  i = 2
  square = int(math.sqrt(num)) + 1
  while i <= square:
    if num % i == 0:
      list.append(i)
      isZhishu = False
      getChildren(num / i)
      i += 1
      break
    i += 1
  if isZhishu:
    list.append(num)
getChildren(number)
print list

同樣對(duì)123124324324134334 進(jìn)行操作,速度很快,得到如下結(jié)果

 Enter a number: 123124324324134334
******************************
******************************
******************************
******************************
******************************
[2, 293, 313, 362107, 1853809L]

PS:這里再為大家推薦幾款計(jì)算工具供大家進(jìn)一步參考借鑒:

在線分解質(zhì)因數(shù)計(jì)算器工具:
http://tools.jb51.net/jisuanqi/factor_calc

在線一元函數(shù)(方程)求解計(jì)算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學(xué)計(jì)算器在線使用_高級(jí)計(jì)算器在線計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 使用python-cv2實(shí)現(xiàn)Harr+Adaboost人臉識(shí)別的示例

    使用python-cv2實(shí)現(xiàn)Harr+Adaboost人臉識(shí)別的示例

    這篇文章主要介紹了使用python-cv2實(shí)現(xiàn)Harr+Adaboost人臉識(shí)別的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python開發(fā)文字版密室逃脫游戲的實(shí)例(含代碼)

    Python開發(fā)文字版密室逃脫游戲的實(shí)例(含代碼)

    密室逃脫游戲是一種頗受歡迎的解謎類游戲,玩家通常需要通過(guò)觀察、推理、合作等方式解決一系列難題,以逃脫困境,在這篇博文中,我們將使用Python開發(fā)一個(gè)文字版密室逃脫游戲,旨在通過(guò)簡(jiǎn)單的文本交互來(lái)呈現(xiàn)游戲的趣味性與挑戰(zhàn)性
    2025-04-04
  • Python類super()及私有屬性原理解析

    Python類super()及私有屬性原理解析

    這篇文章主要介紹了Python類super()及私有屬性原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 詳談Python2.6和Python3.0中對(duì)除法操作的異同

    詳談Python2.6和Python3.0中對(duì)除法操作的異同

    下面小編就為大家?guī)?lái)一篇詳談Python2.6和Python3.0中對(duì)除法操作的異同。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • python保存二維數(shù)組到txt文件中的方法

    python保存二維數(shù)組到txt文件中的方法

    今天小編就為大家分享一篇python保存二維數(shù)組到txt文件中的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python+OpenCV實(shí)現(xiàn)單個(gè)圓形孔和針檢測(cè)

    Python+OpenCV實(shí)現(xiàn)單個(gè)圓形孔和針檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python+OpenCV實(shí)現(xiàn)單個(gè)圓形孔和針檢測(cè)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-10-10
  • python輸出國(guó)際象棋棋盤的實(shí)例分享

    python輸出國(guó)際象棋棋盤的實(shí)例分享

    在本篇文章里小編給大家整理的是一篇關(guān)于python輸出國(guó)際象棋棋盤的實(shí)例詳解,有興趣的朋友們可以參考下。
    2020-11-11
  • Atom的python插件和常用插件說(shuō)明

    Atom的python插件和常用插件說(shuō)明

    這篇文章給大家分享了Atom的python插件和常用插件,有需要的朋友們可以學(xué)習(xí)參考下。
    2018-07-07
  • 淺談Python模塊導(dǎo)入規(guī)范

    淺談Python模塊導(dǎo)入規(guī)范

    這篇文章主要介紹了淺談Python模塊導(dǎo)入規(guī)范,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python opencv鼠標(biāo)畫矩形框之cv2.rectangle()函數(shù)

    python opencv鼠標(biāo)畫矩形框之cv2.rectangle()函數(shù)

    鼠標(biāo)操作屬于用戶接口設(shè)計(jì),以前一直使用Qt來(lái)做,但是如果只需要簡(jiǎn)單的鼠標(biāo),鍵盤操作,直接調(diào)用opencv庫(kù)的函數(shù)也未嘗不可,下面這篇文章主要給大家介紹了關(guān)于python opencv鼠標(biāo)畫矩形框cv2.rectangle()函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論

嵩明县| 鲁山县| SHOW| 大同县| 本溪市| 芦山县| 饶河县| 花莲县| 德安县| 阳东县| 遵义市| 夏河县| 任丘市| 衡南县| 册亨县| 平利县| 麟游县| 台北县| 萨嘎县| 石嘴山市| 南城县| 南漳县| 武汉市| 崇州市| 南岸区| 浦城县| 吕梁市| 黎城县| 卓尼县| 贡嘎县| 津市市| 瑞金市| 紫阳县| 郓城县| 台安县| 五峰| 平潭县| 吉林省| 九龙县| 仪征市| 三原县|