本文实例讲述了Python实现正整数分解质因数操作。分享给大家供大家参考,具体如下:
遇到一个Python编程练习题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def div_func(n):
result = []
while True :
for i in xrange ( 2 , int (n * * 0.5 ) + 1 ):
if n % i = = 0 :
result.append(i)
n / = i
break
else :
result.append(n)
break
return ' * ' .join( map ( str , result))
num = raw_input ( 'please enter a number( < 1.0E+18):' )
try :
int_num = int (num)
if int_num > 10 * * 18 or int_num < 0 :
raise ValueError()
print div_func(int_num)
except ValueError:
print 'invalid number'
|
please enter a number( < 1.0E+18):123124324324134334
2 X 293 X 313 X 362107 X 1853809
自己写的,完全没有参考网上其它人的算法。结果和大家都差不多。
另外还可以用递归方法:
1
2
3
4
5
6
7
8
9
10
|
def factor(num):
if num = = 1 :
return []
else :
for i in range ( 2 , num + 1 ):
n, d = divmod (num, i)
if d = = 0 :
return [i] + factor(n)
for test_num in ( 299 , 1024 , 20 , 7 ):
print (test_num, '->' , ' * ' .join( map ( str , factor(test_num))))
|
299 -> 13 * 23
1024 -> 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
20 -> 2 * 2 * 5
7 -> 7
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/xpresslink/article/details/53985138