题解 | #质数因子#

质数因子

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=' ')







全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务