题解 | #质数因子#(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)