摘要:本博客介绍了如何用Python实现质因数分解,包括判断素数、寻找下一个素数和分解质因数的函数。通过用户交互,展示整数的质因数。


代码逻辑

本程序由三个函数组成,每个函数都有特定的功能,共同实现了质因数分解的过程。

  1. is_prime_number(n):
  • 判断 n 是否为素数
  • 返回值是boolean
  1. larger_prime_number(n=0):
  • 返回一个大于给定整数 n 的最小素数,如果没有传入n,则默认返回最小质数2
  1. factorization(n):
  • 对给定整数 n 的质因数分解。
  • 返回值是一个包含了n 的所有质因数的list

代码实现

"""质因式分解"""

import math

def is_prime_number(n):
    """判断 n 是不是素数"""
    
    if n <= 1:
        return False
    elif n == 2:
        return True
    elif n % 2 == 0:
        return False
    i = 3
    while i <= math.sqrt(n):
        if n % i == 0:
            return False    
        i += 2
    return True


def larger_prime_number(n = 0):
    """
    返回在数轴上,n 左边的第一个素数
    如果没有传数进来,则默认返回数轴上的第一个素数——2
    """
    if n < 2:
        return 2
    if n % 2 == 0:
        i = n + 1
    else:
        i = n + 2
    while not is_prime_number(i):
        i += 2 # i 当前只有可能是单数,以后的素数也只可能是单数。所以每次 + 2,跳过所有偶数
    return i

# 测试 iarger_prime_number 和 is_prime_number
"""
while True:
    a = int(input("请输入一个整数:"))  
    if a < 0:
        break
    b = larger_prime_number(a)
    print("比", a, "更大的素数是:", b)
"""

def factorization(n):
    """对 n 进行质因式分解,返回 n 的所有质因数"""

    if n < 1:
        return None
    divisor = []
    i = 2
    while not is_prime_number(n):
        if n % i == 0:
            divisor.append(i)
            n = n / i
        else:
            i = larger_prime_number(i)
    divisor.append(int(n))
    return divisor

# 测试 factorization
while True:
    a = int(input("请输入一个整数:"))
    if(a <= 1):
        print("感谢使用,程序已退出")
        break
    elif factorization(a) == None:
        print("该数无法进行质因数分解")
    else: 
        print(a, " 的质因数为:", factorization(a))

运行结果

Python实现质因数分解_质因数

总结

在本博客中,我们通过Python代码实现了质因数分解,包括素数判断、寻找下一个素数和分解过程。用户可以输入整数,程序将展示其质因数。