功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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