题解 | #质数因子#
质数因子
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=' ')