欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

版本一:

開始,沒動腦子就開始寫了,結(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這個十位數(shù)的時候,報錯:

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

版本二:

版本一報錯是因為range有了太多的項,于是想著減少range出的list的項。由于,在判斷一個數(shù)n是否是質(zhì)數(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): #多加個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ù)字可以增大很多而不至于報錯。但是 ,也是很有限度的,當輸入大數(shù)如 123124324324134334 時,會導致內(nèi)存不足,殺死進程

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

為了追求能對更大的數(shù)進行操作,猜想原因可能是遞歸調(diào)用時每次都需要建立一個很大的由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

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

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

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

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

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

科學計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq

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

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python中的enumerate函數(shù)使用方法詳解

    Python中的enumerate函數(shù)使用方法詳解

    enumerate()是python的內(nèi)置函數(shù),適用于python2.x和python3.x,這篇文章主要給大家介紹了關于Python中的enumerate函數(shù)使用方法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Python通過TensorFLow進行線性模型訓練原理與實現(xiàn)方法詳解

    Python通過TensorFLow進行線性模型訓練原理與實現(xiàn)方法詳解

    這篇文章主要介紹了Python通過TensorFLow進行線性模型訓練原理與實現(xiàn)方法,結(jié)合實例形式詳細分析了Python通過TensorFLow進行線性模型訓練相關概念、算法設計與訓練操作技巧,需要的朋友可以參考下
    2020-01-01
  • Python編寫車票訂購系統(tǒng)?Python實現(xiàn)快遞收費系統(tǒng)

    Python編寫車票訂購系統(tǒng)?Python實現(xiàn)快遞收費系統(tǒng)

    這篇文章主要為大家詳細介紹了Python編寫車票訂購系統(tǒng),Python實現(xiàn)快遞收費系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 用python實現(xiàn)的去除win下文本文件頭部BOM的代碼

    用python實現(xiàn)的去除win下文本文件頭部BOM的代碼

    windows環(huán)境下新建或編輯文本文件,保存時會在頭部加上BOM。使用ftp上傳到linux下,在執(zhí)行時第一行即報錯。以下方法可以去除BOM頭,有需要的朋友可以參考下
    2013-02-02
  • 最實用的20個python小技巧

    最實用的20個python小技巧

    大家好,本篇文章主要講的是最實用的20個python小技巧,感興趣的同學快來看一看吧,希望對你有幫助
    2021-11-11
  • Python字符串格式化format()方法運用實例

    Python字符串格式化format()方法運用實例

    這篇文章主要給大家介紹了關于Python字符串格式化format()方法運用實例的相關資料,字符串格式化是Python編程中十分常用的部分,它可以幫助我們將更具可讀性的數(shù)據(jù)輸出到控制臺或?qū)懭胛募?需要的朋友可以參考下
    2023-08-08
  • 利用Python實現(xiàn)好看的水波特效

    利用Python實現(xiàn)好看的水波特效

    這篇文章主要介紹了如何利用Python語言實現(xiàn)水波特效,文中的示例代碼講解詳細,對我們學習Python有一定的幫助,需要的可以參考一下
    2022-04-04
  • 目前最全的python的就業(yè)方向

    目前最全的python的就業(yè)方向

    Python是一門面向?qū)ο蟮木幊陶Z言,編譯速度超快,從誕生到現(xiàn)在已經(jīng)25個年頭了。其特點在于靈活運用,因為其擁有大量第三方庫,所以開發(fā)人員不必重復造輪子,就像搭積木一樣,只要擅于利用這些庫就可以完成絕大部分工作
    2018-06-06
  • python實現(xiàn)的按要求生成手機號功能示例

    python實現(xiàn)的按要求生成手機號功能示例

    這篇文章主要介紹了python實現(xiàn)的按要求生成手機號功能,涉及Python流程控制、隨機數(shù)操作及數(shù)學運算相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • Python用SSH連接到網(wǎng)絡設備

    Python用SSH連接到網(wǎng)絡設備

    這篇文章主要介紹了Python用SSH連接到網(wǎng)絡設備,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02

最新評論