题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import sys
import math
"""
2024年3月14日12:11:09 解法思路
1、输入整数
2、得到整数的全部质因子、加入一个列表:
难点就是质因子的取法:
2 3 5 7都是可能的质因子,直接遍历
https://baike.baidu.com/item%E8%B4%A8%E5%9B%A0%E5%AD%90/10720836?fr=ge_ala 百度百科塔型分解
对可能存在的质因子进行遍历,如果能够整除,分解为质因子
和整除值,质因子加入数组,整除值继续分解。
直到分为质因子和1,1的话说明最后一个整除值都被分解完成
直接跳出循环
3、对列表升序排序
不需要排序了,因为遍历的时候,就是从小到大遍历,添加的时候
一定也是从小到大的
4、输出
通过不了,G了,太多数字
"""
# def getList(num):
# resList = [2, 3, 5, 7]
# numList = []
# for i in resList:
# if num == 1:
# break
# while num > 1:
# if num % i == 0:
# numList.append(i)
# num = num//i
# else:
# break
# # 本身是质因子,那说明2 3 5 7都没办法整除,那直接添加
# if num > 1:
# numList.append(num)
# return numList
"""
2024年3月14日13:28:21 解法思路
同上
质因子的取法:
评论区用根号来作为判断条件,之前想的太简单
"""
def getList(num):
numList = []
i = 2
while i <= math.sqrt(num):
while num % i == 0:
numList.append(i)
num = num//i
i = i+1
# 此时跳出循环,num如果不是等于1,那么就说明没有办法开根号了
# 那他本身就是质因子了
if num != 1:
numList.append(num)
return numList
num = int(input())
numList = getList(num)
for i in numList:
print(i, end=' ')