题解 | #质数因子#

质数因子

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)



全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 18:02
来组里2个月了,天天让打杂,写的代码不超过200行。现在已经开始摆烂冲秋招了。我感觉4个月,就算周六日全天睡觉,周一到周五一直看黑马也比我来节子实习学到的东西多。
小熊梦奇:😅节子那么多文档,你是一个都不看啊。 大厂的意义在于内部系统对你开放,看明白事情起因经过结果解决措施,实在看不明白,直接聊天系统搜到对应团队去问当时的负责人,大部分情况下都会给你解答。 这才是大厂实习的精髓
实习生的蛐蛐区
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务