Python實現將一個正整數分解質因數的方法分析 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

遇到一個python程式設計聯絡題目:將一個正整數分解質因數。

例如:輸入90,列印出90=2*3*3*5。

版本一: ... 線上計算器_標準計算器: 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具Python實現將一個正整數分解質因數的方法分析2018.07.05程式語言python,正整數,質因數HOME程式語言Python實現將一個正整數分解質因數的方法分析Advertisement本文例項講述了Python實現將一個正整數分解質因數的方法。

分享給大家供大家參考,具體如下:遇到一個python程式設計聯絡題目:將一個正整數分解質因數。

例如:輸入90,列印出90=2*3*3*5。

版本一:開始,沒動腦子就開始寫了,結果如下程式碼 #!/usr/bin/python #014.py importmath number=int(raw_input("Enteranumber:")) whilenumber!=1: foriinrange(1,number1): if(number%i)==0andi!=1: number=number/i ifnumber==1: print"%d"%i else: print"%d*"%i, break 結果,輸入9876543210這個十位數的時候,報錯:Traceback(mostrecentcalllast): File“./014.py”,line8,in   foriinrange(1,number1):OverflowError:range()resulthastoomanyitems版本二:版本一報錯是因為range有了太多的項,於是想著減少range出的list的項。

由於,在判斷一個數n是否是質數的時候,只需從2到n的平方根就行了,所以有了版本二,程式碼如下: #!/usr/bin/python #014_1.py importmath number=int(raw_input("Enteranumber:")) list=[] defgetChildren(num): print'*'*30 isZhishu=True foriinrange(2,int(math.sqrt(1num))1):#多加個1 ifnum%i==0andi!=num: list.append(i) isZhishu=False getChildren(num/i) break ifisZhishu: list.append(num) getChildren(number) printlist 這樣,數字可以增大很多而不至於報錯。

但是,也是很有限度的,當輸入大數如123124324324134334時,會導致記憶體不足,殺死程序Traceback(mostrecentcalllast): File“./014_1.py”,line20,in   getChildren(number) File“./014_1.py”,line11,ingetChildren   foriinrange(2,int(math.sqrt(1 num))1):MemoryError為了追求能對更大的數進行操作,猜想原因可能是遞迴呼叫時每次都需要建立一個很大的由range()建立的list,於是想避免range的使用,於是有了版本三:版本三:程式碼 #!/usr/bin/python #014_1.py importmath number=int(raw_input("Enteranumber:")) list=[] defgetChildren(num): print'*'*30 isZhishu=True i=2 square=int(math.sqrt(num))1 whilei<=square: ifnum%i==0: list.append(i) isZhishu=False getChildren(num/i) i=1 break i=1 ifisZhishu: list.append(num) getChildren(number) printlist 同樣對123124324324134334進行操作,速度很快,得到如下結果 Enteranumber:123124324324134334******************************************************************************************************************************************************[2,293,313,362107,1853809L]PS:這裡再為大家推薦幾款計算工具供大家進一步參考借鑑:線上分解質因數計算器工具:http://tools.jb51.net/jisuanqi/factor_calc線上一元函式(方程)求解計算工具:http://tools.jb51.net/jisuanqi/equ_jisuanqi科學計算器線上使用_高階計算器線上計算:http://tools.jb51.net/jisuanqi/jsqkexue線上計算器_標準計算器:http://tools.jb51.net/jisuanqi/jsq更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python數學運算技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》希望本文所述對大家Python程式設計有所幫助。

目錄1.您可能感興趣的文章:您可能感興趣的文章:Python實現簡單求解給定整數的質因數演算法示例Python程式設計求質數例項程式碼Python判斷是否為質數或素數的例項使用Python判斷質數(素數)的簡單方法講解python實現挑選出來100以內的質數Python程式設計實現數學運算求一元二次方程的實根演算法示例python實現數獨演算法例項Python實現破解猜數遊戲演算法示例Python實現的質因式分解演算法示例Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08Spark實戰搭建我們的Spark分佈式架構2019.12.08【機器學習】深度學習開發環境搭建2019.12.08AdvertisementAdvertisement



請為這篇文章評分?