python基础编程_11_任意正整数的因数分解

把一个合数分解成若干个质因数的乘积的形式,即求质因数的过程叫做分解质因数。

Python练习题问题如下:

要求:将一个正整数分解质因数;例如您输入90,分解打印90=2*3*3*5。


Python解题思路分析:

这道题需要分三部分来分解,具体分解说明如下。


1、首先当这个质数恰等于n的情况下,则说明分解质因数的过程已经结束,打印出即可。


2、如果遇到n>=k,但n能被k整除的情况,则应打印出k的值。同时用n除以k的商作为新的正整数你n,之后再重复执行该步的操作直到符合1。

def reduceNum(n):
    
    '''策略:求解n的因式分解,首先从2开始到n遍历,
    如果n%某一个数的结果是整数,则打印出该数,同时n=n/该数
    直到n==1结束
    '''
    a='{} = '.format(n)

    #判断n是否为正整数
    if not isinstance(n, int) or n <= 0 :
        print ('请输入一个正确的数字 !')
        exit(0)
        
    #排除n的值为1 的特殊情况   
    elif n in [1] :        
        a+='{}'.format(n)

    #n的值不为1的正整数   
    while n not in [1] : # 循环保证递归
        for temp in range(2, n + 1) :
            
            if n % temp == 0:#更改n的值,同时记录下它的因数并跳出for循环
                n =int( n/temp)# n 等于 n/temp
                
                if n == 1: #此时n的值大小和因数相同,作为末尾因数
                    a+=str(temp)
                    
                else : # index 一定是因数                    
                    a+='{} *'.format(temp)
                    
                break
    print(a)
            
reduceNum(999)
reduceNum(90)
999 = 3 *3 *3 *37
90 = 2 *3 *3 *5


你可能感兴趣的:(python)