题解 | #质数因子#(python循环解法)
质数因子
http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
首先我们得知道一个整数x的质因子怎么求:
用x从小到大去除在2到 范围之间的整数。即从2开始除,如果能整除,记录下这个除数,然后用商去继续进行上述的操作,直到商为1;如果除不进,除数加一。如果一直加一,除数大于
,则说明x的质因子只有它本身。
(注:
1、范围是[2:])的原因是,再往后就重复了( 因为如果它不是质数,那么它一定可以表示成两个数(除了1和它本身)相乘,这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了)
2、除法各个数的叫法:被除数 除数=商...余数
3、还有一个规律就是,求质因子时,用商继续去除的时候可以发现,后面能整出的数都比前面能整除的数大或等于。(eg.180 的质因子是2 2 3 3 5,后面的都>=前面的)
)
代码:
import sys
if name=='main':
line=sys.stdin.readline().strip('\n') #标准输入流
x=int(line)
res='' #用来存储输出的字符串*
i=2
while x!=1: #商不为1
if x%i==0: #如果能整除
res+=str(i) #将当前的除数(当前的一个质因子)加到res中
res+=' '
x=x/i #将a变成商,继续上述操作
else: #不能能整除
if i>int(x**0.5): #如果除数比根号x大,则说明x的质因子只有它本身,故将x加res,结束循环
res+=str(int(x))
res+=' '
break
else:#不能能整除,但除数又还没大于根号x
i+=1
print(res)