摘要:本博客介绍了如何用Python实现质因数分解,包括判断素数、寻找下一个素数和分解质因数的函数。通过用户交互,展示整数的质因数。
代码逻辑
本程序由三个函数组成,每个函数都有特定的功能,共同实现了质因数分解的过程。
is_prime_number(n)
:
- 判断
n
是否为素数 - 返回值是
boolean
值
larger_prime_number(n=0)
:
- 返回一个大于给定整数
n
的最小素数,如果没有传入n
,则默认返回最小质数2
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代码实现了质因数分解,包括素数判断、寻找下一个素数和分解过程。用户可以输入整数,程序将展示其质因数。