题解 | #质数因子#

质数因子

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

  1. 根据解答区大佬的思路,用for循环,理解了之后,提交遇到超大数时,超时了
  2. 再根据大佬们的想法,推测是for循环里面的结束位置比较死板,没有随着输入数字的重新赋值而改变
  3. 意思就是说,如果输出的是一个100,在while中输出两个2后,100会变为25
  4. 这时对于25来说,它因素的最大值,应该是根号25,但for循环中的结束位置,仍然为根号100(50)
  5. 这就多循环了很多不必要的数字
  6. 解决这个的办法是使用while循环,
  7. 因为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)



全部评论

相关推荐

你包有offer的:我面了10面才进去
点赞 评论 收藏
分享
04-15 23:42
中山大学 Java
搞Java不如组一辈子乐队:接好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务