python 输入一个数,求他的所有质数因子

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )

要做这题,需要对数字的特性有了解。2是个特殊的存在,当被除数可以被2整除时就一直循环。 while int(line) % 2== 0: num_list.append(2)  line = int(line) / 2 当不能被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

#/usr/bin/python2
#-*- coding:utf-8 -*-
while True:
    try:
        line = raw_input().strip()
        if line == "":
            break 
        num_list = []
        num_str = ""
        j = 3
        while int(line) % 2 == 0:
            num_list.append(2)
            line = int(line) / 2
        while j <= int(line)**0.5:
            if int(line) % j == 0:
                num_list.append(j)
                line = int(line) / j
            else:
                    j += 2
        num_list.append(int(line))
        print " ".join(map(str,num_list))

    except:
        break

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值