本文实例讲述了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