题解 | #质数因子#
质数因子
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)
深信服公司福利 891人发布