题解 | #质数因子#

质数因子

https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

# 一个数可以被它所有的质因子表示
# 这里仅考虑不大于根号下n的因子:
# - 因为当n被所有不大于根号下n的质因子整除后,要么余1,要么余2,要么会剩下一个且仅会剩下一个大于等于根号下n小于等于n的质数
# - 不可能出现两个不相等且同时大于根号下n的质因子a和b,这会导致a*b>n

# 从2开始遍历到根号下n,第一个能被整除的一定是最小的质数因子(如果是合数,一定有2<=x<i的质因子x)
# 后续能被整除的也一定是质数,若是合数,则合数的质因子肯定出现在之前,不成立

import math

n = int(input())
for i in range(2, int(math.sqrt(n))+1):  # sqrt()函数可以求平方根
    while n % i == 0: 
        print(i, end=' ')  # 得到的每个i都是n的质因子(即列举重复的质因子)
        n = n // i  # n不断变小,确保没有i这个质因子
        # 双除号:输出整数
if n > 2:
    print(n)

全部评论

相关推荐

牛客21331815...:像我一投就pass,根本不用焦虑泡池子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务