类中递归,考虑到递归需要调用函数的本身,而使用self会发生很多报错,因此使用静态方法。
"""
功能:整数最小因子拆分
例如:2*2*2*3=24
2*3=6
2*2*2*2*2*5*5=800
要求:输入多组数值
"""
from functools import reduce
class IntNumber:
def __init__(self,n):
self.n = n
@staticmethod
def intSplit(n):
"""
拆分整数(递归)
"""
for i in range(2,int(n//2+1)):
if n%i == 0:
re_list.append(i)
return IntNumber.intSplit(n/i)
def formatOutPut(self,re_list):
"""
格式化输出
"""
re_list.append(int(self.n/reduce(lambda x,y:x*y,re_list)))
for i in range(1,len(re_list)):
if i == len(re_list) - 1:
print(f"{re_list[i]}",end="")
else:
print(f"{re_list[i]}*",end="")
print(f"={self.n}")
if __name__ == "__main__":
while True:
re_list = [1]
try:
n = int(input())
c = IntNumber(n)
IntNumber.intSplit(n)
c.formatOutPut(re_list)
except:
break
注: 纸上得来终觉浅,绝知此事要躬行。