Python 将一个正整数分解质因数

原创 2017年01月03日 00:23:02

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


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

自己写的,完全没有参考网上其它人的算法。结果和大家都差不多。


另外还可以用递归方法:

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 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

遇到一个题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  • rosboy
  • rosboy
  • 2014-08-13 21:17:51
  • 17937

python分解质因数

# -*- coding: utf-8 -*- # 要求:将一个正整数分解质因数;例如您输入90,分解打印90=2*3*3*5 def f(n): n=int(n) for i in ...
  • Guo_Apple
  • Guo_Apple
  • 2017-04-06 14:33:32
  • 3417

python实现求解给定整数的质因数

接着做题遇到求解质因数分解的问题,思想很简单,就是需要遍历从1到该整数本身,并且判断当数字为质数时加入列表最后输出即可,求解这样的一个正整数的质因数分解,关键在于理解,每次得到一个质因数之后需要更新整...
  • Together_CZ
  • Together_CZ
  • 2017-07-15 14:45:15
  • 1266

python实现整数分解为质数的算法

之前面试碰到过一道题,要求将整数分解为质数,用c实现看上去较为繁琐,最近学习python,拿这道题练练手,相对于c而言,代码非常简洁。 废话不多说,先上源码。 def isnotin(meta , l...
  • liliboy9527
  • liliboy9527
  • 2017-03-05 11:38:41
  • 1445

Python因数分解

欢迎访问我的网站:omegaxyz.com把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。 分解质因数只针对合数。(分解质因数也称分解素因数)求一个数分解质因数,要从最小的...
  • xyisv
  • xyisv
  • 2017-09-27 09:50:29
  • 723

质因数分解及算法实现

每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。而这个因数一定是一个质数。 定义 质因数(或质因子)...
  • u014361775
  • u014361775
  • 2015-08-17 11:04:55
  • 7321

质因数分解及算法实现

每个合数都可以写成几个质数相乘的形式,这几个质数就都叫做这个合数的质因数。如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。而这个因数一定是一个质数。 定义 质因数(或质因子)在数论里...
  • u010258605
  • u010258605
  • 2015-05-12 12:49:33
  • 5381

python基础练习---求正整数分解质因数!

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质...
  • jerechen
  • jerechen
  • 2018-01-16 20:07:23
  • 144

将正整数分解质因数

public void divide(int n) { if(n
  • wling_89
  • wling_89
  • 2011-06-13 14:50:00
  • 239

将一个正整数分解质因数

//由于设置的数组大小为100,当输入的数字过大时该算法无效,如输入213213 import java.util.Scanner; public class fenjie2 { in...
  • u014271612
  • u014271612
  • 2015-08-15 09:29:42
  • 544
收藏助手
不良信息举报
您举报文章:Python 将一个正整数分解质因数
举报原因:
原因补充:

(最多只允许输入30个字)