题解 | #质数因子#

质数因子

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

python时间超时优化

实际上除数2是个特殊的存在,当被除数可以被2整除时就一直循环。 i = 2 while int(line) % i == 0: num_list.append(i) line = int(line) / i 当不能被2整除时,以3做为除数,如果可以整除继续,不能整除则除数每次以2递加(也就是3,5,7这样),跳出循环的条件为大佬们说的定理:因为如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。while int(line)**0.5 >= j: if int(line) % j == 0: num_list.append(j) line = int(line) / j else: j += 2

import sys
try:
    while True:
        line = sys.stdin.readline().strip()
        if line == "":
            break
        num_list = []
        num_str = ""
        i = 2
        j = 3
        while int(line) % i == 0:
            num_list.append(i)
            line = int(line) / i
        while int(line)**0.5 >= j:
            if int(line) % j == 0:
                num_list.append(j)
                line = int(line) / j
            else:
                j += 2
        num_list.append(int(line))
        for i in num_list:
             num_str += str(i) + " "
        print num_str
except:
    pass
全部评论

相关推荐

点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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