python分解质因数

img


质数是指:除了1和本身外没有其他因子的自然数(质数即素数)
最小的质数为2,其他如5 719等
输入正整数m,将其分解质因数。

def prime_factors(n, factors = list()):
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return prime_factors(n//i, factors + [i])
    return factors + [n]

m = int(input())
ans = prime_factors(m)
print(f"{m}={'x'.join(map(str, ans))}")

分解质因数,分解一下题目步骤,按照以下代码测试看看:

def prime_factors(n):
    """
    分解质因数函数,返回n的所有质因数
    """
    factors = []  # 用来存储质因数
    i = 2  # 从最小质数2开始试除
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return factors

# 测试分解质因数的函数
m = int(input("请输入一个正整数:"))
print(f"{m}的质因数为:{prime_factors(m)}")

运行程序后,会要求用户输入一个正整数m,然后输出其所有的质因数。例如,输入20,则输出2和5,因为20可以分解为2 × 2 × 5。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7423373
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python小程序(11)输入两个正整数m和n,求其最大公约数和最小公倍数
  • 除此之外, 这篇博客: Python基础经典问题-特殊图形的输出(星号三角形)中的 2.从键盘输入m行,在屏幕上输出m行的直角图案 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 例如输入:8 输出为:

    ,

    m=eval(input())
    for i in range(1,m+1):
        for j in range(1,2*i):
            print('*',end='')
        print()
  • 以下回答由chatgpt基于相关博客总结生成:

    代码示例:

    def prime_factors(n):
        """分解质因数函数"""
        factors = []
        # 将2作为唯一的偶数因子处理
        while n % 2 == 0:
            factors.append(2)
            n //= 2
    
        # 处理奇数因子
        for i in range(3, int(n**0.5)+1, 2):
            while n % i == 0:
                factors.append(i)
                n //= i
    
        # 处理剩余的因子
        if n > 2:
            factors.append(n)
    
        return factors
    

    说明: - 该函数的输入为一个正整数n,输出为n的质因数列表。 - 首先将2作为唯一的偶数因子,将其全部除尽。 - 然后处理剩余的奇数因子,只需循环到n的平方根即可。 - 最后处理剩余的因子,如果n>2则将其加入质因数列表中。

    示例输入输出:

    # 输入为正整数123456789,输出为它的质因数列表
    prime_factors(123456789) # 输出 [3, 3, 3607, 3803]