题解 | #质数因子#(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)
全部评论
if __name__ == "__main__"才对
点赞 回复 分享
发布于 2021-08-27 11:08
这个好像没有判断是不是质数吧?
点赞 回复 分享
发布于 2021-09-04 11:05

相关推荐

评论
17
3
分享
牛客网
牛客企业服务