题解 | #质数因子#

质数因子

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

import math
n = int(input())
for i in range(2, int(math.sqrt(n))+1):
	# 一个数可以被它所有的质因子表示
    # 这里仅考虑不大于根号下n的因子
    # 因为当n被所有不大于根号下n的【质】因子整除后,要么余1,要么余2,要么会剩下一个且仅会剩下一个大于等于根号下n小于等于n的质数(不可能出现两个不相等且同时大于根号下n的质因子a和b,这会导致a*b>n)
# for i in range(2, n):
    # 2<=i<n
    while n % i == 0:
        # 第一个能被整除的一定是最小的质数因子(如果是合数,一定有2<=x<i的质因子x)
        # 后续能被整除的也一定是质数,若是合数,则合数的质因子肯定出现在之前,不成立
        print(i, end=' ')  # 得到的每个i都是n的质因子(即列举重复的质因子)
        n = n // i  # n不断变小,确保没有i这个质因子
        # 双除号:输出整数
if n > 2:
    print(n)
全部评论
记得以前数学还行啊,怎么现在连这个都看不懂,气哭了
4 回复 分享
发布于 2022-05-22 10:46
为什么n的因子一定不会大于根号下n呀,170的因子没有17嘛
2 回复 分享
发布于 2021-10-06 09:44
没看懂那个if n>2?
点赞 回复 分享
发布于 2022-01-03 00:35
没有17?瞎说什么
点赞 回复 分享
发布于 2022-03-04 11:14
没看懂
点赞 回复 分享
发布于 2022-05-20 19:54
要么余1,要么余2,要么会剩下一个且仅会剩下一个....这句是表达的怎么个意思呢
点赞 回复 分享
发布于 2022-05-22 13:32
i = 4的时候为什么没打印出来?
点赞 回复 分享
发布于 2022-08-09 10:56
666
点赞 回复 分享
发布于 2022-08-22 09:54 云南
这个注释加分
点赞 回复 分享
发布于 2022-08-23 18:22 北京
输入1,结果不对
点赞 回复 分享
发布于 2023-04-09 19:56 北京
n>2?应该是>=2,不然输入2,没有输出,2也是质数
点赞 回复 分享
发布于 05-13 17:22 江苏

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
99 46 评论
分享
牛客网
牛客企业服务