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


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

突然发现初学程序都离不开数学,从第一道的费波那契数列到前一道的水仙花数。而这一道就是质因素了。什么是质因数呢,这是小学的知识了,应该还没还给老师吧。在Wiki百科中质因数是指能整除给定正整数的质数。而...
  • u013009618
  • u013009618
  • 2015年03月14日 14:56
  • 3900

Python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

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

C语言实例9—将一个正整数分解质因数

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 /* 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质...
  • LiuJiuXiaoShiTou
  • LiuJiuXiaoShiTou
  • 2016年11月29日 13:38
  • 1195

正整数分解质因数(Java详解)

题目:将一个正整数n分解质因数。例如:50=2*5*5 * 思路描述: * 1、如果n是质数,就直接结束,打印出来就好 * 2、如果i能整除n,就打印i,然后更新n =...
  • jiaohanhan
  • jiaohanhan
  • 2017年05月18日 19:42
  • 766

正整数分解质因数

正整数分解质因数:PrimeFactors.cpp 【题目描述】 将一个正整数分解质因数。例如:输入90,打印出2*3*3*5。 【程序分析】 对n进行分解质因数,应先找到一个最小的质数k,然...
  • mystery_man525
  • mystery_man525
  • 2016年05月29日 10:22
  • 971

将一个正整数分解质因数最简易明白的算法--java编写

将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  • MR_zbh
  • MR_zbh
  • 2016年11月02日 13:25
  • 867

Java小程序:正整数分解质因数

java:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  • yuerliang
  • yuerliang
  • 2016年05月25日 13:56
  • 2552

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

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

FenJie.java 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

//【程序4】FenJie.java 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数, //应先找到一个最小的质数k,然后按下述步骤完成: ...
  • u014657292
  • u014657292
  • 2014年04月11日 18:36
  • 1492

面试题:将一个正整数分解质因数,例如:输入90,打印出90=2*3*3*5.

问题:将一个正整数分解质因数,例如:输入90,打印出90=2*3*3*5. 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:     *     (1)如果这个质数...
  • u012110719
  • u012110719
  • 2015年06月11日 22:12
  • 4967
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python 将一个正整数分解质因数
举报原因:
原因补充:

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