设计一个算法,利用栈实现质因数分解,要求输出格式形如:300=55322
望采纳,谢谢
import math
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def is_prime(x):
if x == 2:
return True
for i in range(2, int(math.sqrt(x)) + 1):
if x % i == 0:
return False
return True
s1 = Stack()
num = int(input())
while not is_prime(num):
for i in range(2, int(math.sqrt(num)) + 1):
if (num % i == 0 and is_prime(i)):
s1.push(i)
num //= i
break
s1.push(num)
while not s1.isEmpty():
print(s1.pop(),end='')
#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author: Roc-xb
"""
import math
# 是否是质数
def is_prime(x):
if x == 2:
return True
for i in range(2, int(math.sqrt(x)) + 1):
if x % i == 0:
return False
return True
# 分解质因式
def factorization(x):
list_factor = [] # 存储质因数
while not is_prime(x):
for i in range(2, int(math.sqrt(x)) + 1):
if (x % i == 0 and is_prime(i)):
list_factor.append(i)
x //= i
break
list_factor.append(x)
return list_factor
if __name__ == '__main__':
num = 300
res = ''.join(str(i) for i in factorization(num)[::-1])
print(res)