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