题解 | #质数因子#

质数因子

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

# 需要证明:一个数至多只有一个大于其平方根的质因数
#设数a,其平方根b,若存在不等质因数c、d满足d>c>b,则有a = b^2 < c*d 
#而又因cd均为a的因数且互质,则a至少为cd的最小公倍数,即a >= c*d,矛盾
#故a的大于平方根b的质因数至多只有一个。容易证明,这种情况出现当且仅当a为质数,仅有一个质因数的情况。
# 故解法:先检测不高于平方根的质因数,检测到一个输出一次并直接除掉。若最后除尽a为1,说明质因数已全部取出;若a未除尽>2,说明a存在高于平方根的质因数,即a必为质数,此时质因子只有a自己,直接输出即可


import math
num = int(input())
for i in range(2, int(math.sqrt(num))+1):
    while num%i == 0:
        print(i, end=' ')
        num = num // i
if num > 2:
    print(num)

全部评论

相关推荐

头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务