题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
- 根据解答区大佬的思路,用for循环,理解了之后,提交遇到超大数时,超时了
- 再根据大佬们的想法,推测是for循环里面的结束位置比较死板,没有随着输入数字的重新赋值而改变
- 意思就是说,如果输出的是一个100,在while中输出两个2后,100会变为25
- 这时对于25来说,它因素的最大值,应该是根号25,但for循环中的结束位置,仍然为根号100(50)
- 这就多循环了很多不必要的数字
- 解决这个的办法是使用while循环,
- 因为while会在每次执行完其中的语句之后,还会进行重新判断,那这时结束位置就可以通过计算重新指定~
原本使用的方式,这个超时了
# 该方法超时了 n = int(input()) for i in range(2 , n // 2 + 1): while n % i == 0: n = n / i print(i,end=" ") if n >= 2: print(n)用while后,不超时了
import math n = int(input()) i = 2 while i <= math.sqrt(n): while n % i == 0: n = n // i print(i,end=" ") i += 1 if n >= 2: print(n)