分享:如何分解质因数之python实现(例如90分解质因数:90=2x3x3x5)

这是一道很老的题了,面试时很有可能回遇到。我整理了一下思路,于是有了下面的代码:

# -*- coding: UTF-8 -*-


def prime_Factor(n):
    n = int(n)
    for i in range(2, n//2+1):  #由于最小的质数是2,所以最大的遍历次数是一半就行了,为了保证遍历到最后一个元素要 +1
        if n % i == 0:
            l.append(i) #笔者认为一个数除去1和它本身外,一定能被2,3,5,7,13,17...等其中一个或多个质数整除,所以i就是质因数。
            return prime_Factor(n/i)  #递归调用函数,传入原数除以第一个质因数的商,以此类推
    l.append(n) #最后一个质因数,因为range范围 n//2 + 1的限制,最后一个质因数,你无法取到,所以,最后要添加上
    return l


if __name__ == "__main__":
    n = input('please input a number:')
    l = []
    L = prime_Factor(n)
    st = str(n)+'='
    for i in L:
        st = st + str(i) + 'x'
    print(st[:-1])

笔试题里往往是这样写的:请写代码分解质因数,如输入90,打印输出:90=2x3x3x5

哈,你找出质因数还不行,还得是那种输出格式,呵呵。。。

笔者的思路是:

1.创建一个空列表,用于存放找出来的质因数,方便打印要求的格式。

2.定义函数prime_Factor(n),找到所有质因数,append到列表中,对于代码部分,看注释。

3.遍历列表,拼接字符串,由于最后一个数字也拼了一个 ‘x’ ,所以打印输出的时候可以用切片的方式去除最后一个‘x’。

如果不切片,会变成90=2x3x3x5x 这样,笔者没想到其他方法。有其他方法的大佬,有幸看到我的博客,望告诉小弟啊。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值