美文网首页
数字因子分解

数字因子分解

作者: __apple | 来源:发表于2019-01-03 14:22 被阅读0次

    给一个 n > 1的正数,找到n的因子分解。结果是一个具有以下形式的字符串:

    "(p1**n1)(p2**n2)...(pk**nk)"
    

    举个例子

    n = 86240 should return "(2**5)(5)(7**2)(11)"
    

    思路分析

    • n == 1, 返回自身
    • 写一个for 循环, 这个 循环应该从2开始, 已 n+1 结束, 原因是range是前闭后开区间
    • 写一个死循环,去检测, 余数是不是0, 以及当前的因子, 出现的次数
    • 拼接最后的结果

    给出答案

    def primeFactors(n):
        res = ''
        for i in range(2, n + 1):
            number = 0
            while(n % i == 0):
                number += 1
                n /= i
            if number > 0:
                res += '({}{})'.format(i, '**%d' % number if number > 1 else '')
            if n == 1:
                return res
    

    进一步讨论

    # 这个题主要是考察了, 循环的知识点, 如何求余, 字符串拼接, 这一题的难点,在于如何对数字进行分解的思考, 一定要学会复杂的东西细节化,才能做出这种题。

    相关文章

      网友评论

          本文标题:数字因子分解

          本文链接:https://www.haomeiwen.com/subject/nbrtrqtx.html