Python实现将一个正整数分解质因数的方法分析


Posted in Python onDecember 14, 2017

本文实例讲述了Python实现将一个正整数分解质因数的方法。分享给大家供大家参考,具体如下:

遇到一个python编程联系题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

版本一:

开始,没动脑子就开始写了,结果如下代码

#! /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

结果,输入9876543210这个十位数的时候,报错:

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的项。由于,在判断一个数n是否是质数的时候,只需从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

这样,数字可以增大很多而不至于报错。但是 ,也是很有限度的,当输入大数如 123124324324134334 时,会导致内存不足,杀死进程

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

为了追求能对更大的数进行操作,猜想原因可能是递归调用时每次都需要建立一个很大的由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 进行操作,速度很快,得到如下结果

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

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线分解质因数计算器工具:
http://tools.3water.com/jisuanqi/factor_calc

在线一元函数(方程)求解计算工具:
http://tools.3water.com/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.3water.com/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.3water.com/jisuanqi/jsq

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
基于python list对象中嵌套元组使用sort时的排序方法
Apr 18 Python
python梯度下降法的简单示例
Aug 31 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
Python 没有main函数的原因
Jul 10 Python
Python模拟登录requests.Session应用详解
Nov 17 Python
Python实现自动整理文件的脚本
Dec 17 Python
详解python的异常捕获
Mar 03 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 #Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 #Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 #Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
Dec 14 #Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 #Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 #Python
windows下Virtualenvwrapper安装教程
Dec 13 #Python
You might like
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
用js判断输入是否为中文的函数
2014/03/10 Javascript
JavaScript动态修改网页元素内容的方法
2015/03/21 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
python不同版本的_new_不同点总结
2020/12/09 Python
python中append函数用法讲解
2020/12/11 Python
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
教育课题研究自我鉴定范文
2013/12/28 职场文书
学习决心书范文
2014/03/11 职场文书
房产委托公证书样本
2014/04/04 职场文书
教师个人自我评价范文
2014/04/13 职场文书
作风建设演讲稿
2014/05/23 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
浅析Python中的套接字编程
2021/06/22 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android