Python 练习实例14
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序源代码:
实例(Python 2.0+)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def reduceNum(n):
print '{} = '.format(n),
if not isinstance(n, int) or n <= 0 :
print '请输入一个正确的数字 !'
exit(0)
elif n in [1] :
print '{}'.format(n)
while n not in [1] : # 循环保证递归
for index in xrange(2, n + 1) :
if n % index == 0:
n /= index # n 等于 n/index
if n == 1:
print index
else : # index 一定是素数
print '{} *'.format(index),
break
reduceNum(90)
reduceNum(100)
以上实例输出结果为:
90 = 2 * 3 * 3 * 5 100 = 2 * 2 * 5 * 5
小天儿
102***9045@qq.com
使用 Python3 的参考解法:
输出测试如下所示:
小天儿
102***9045@qq.com
JohnLee
372***369@qq.com
使用 Python3 的参考解法:
JohnLee
372***369@qq.com
Chivalry
825***501@qq.com
参考解法:
Chivalry
825***501@qq.com
Eric
382***115@qq.com
参考方案:
Eric
382***115@qq.com
Kunz
sun***gup@163.com
我的貌似更简单更好理解一些:
Kunz
sun***gup@163.com
Almighty
132***9971@qq.com
Python3 参考方法:
Almighty
132***9971@qq.com
Mark
104***7790@qq.com
Python3.6 这种写法能够运行更大的数字
Mark
104***7790@qq.com
CosmosHua
cos***cosmos@163.com
Python3简明解法:
CosmosHua
cos***cosmos@163.com
kevinjin
314***1905@zju.edu.cn
参考方法:
kevinjin
314***1905@zju.edu.cn
小差罗
675***527@qq.com
Python 3.x 下测试
办法比较蠢 但是挺好理解的吧循环次数不多,定义素数函数,能被素数整除就输出
小差罗
675***527@qq.com
大大大大大大大熊
382***076@qq.com
Python3 参考方法:
大大大大大大大熊
382***076@qq.com
wuhangxiang
yef***yun241@foxmail.com
参考方法:
wuhangxiang
yef***yun241@foxmail.com
Echo
csz***13@163.com
函数处理, 兼容 python2.x 与 python3.x
Echo
csz***13@163.com
阳光不锈
173***979@qq.com
Python3 下测试:
阳光不锈
173***979@qq.com
阳光不锈
173***979@qq.com
Python3: 使用一个生成器 f(x),生成整数 x 的所有质因数。代码如下:
阳光不锈
173***979@qq.com