Python3練習:分解質因數


代碼如下:

# 質數判斷函數
def is_prime(num): if num < 2: return False elif num == 2 or num == 3: return True else: for i in range(2, int(num**0.5) + 1): if num % i == 0: return False return True # 質因數分解函數
def prime_factorize(num): if num < 2:  # 非質數亦非合數
        print('"%s" have no prime factor.' % num) return 0 if is_prime(num):  # 質數
        print('"%s" is prime number!' % num) return 0 else:  # 合數
        pri_fac_list = []  # 用於保存質因數
        while 1: if is_prime(num): pri_fac_list.append(num) break
            for i in range(2, num//2 + 1): if is_prime(i) and num % i == 0:  # i既是質數又是因數
 pri_fac_list.append(i) num = num // i # print('TEST:num = %s' % num)
                    break  # 跳出for循環
    print(pri_fac_list) if __name__ == '__main__': global n try: n = int(input('Enter a number:').strip())  # 輸入待分解的數
    except ValueError: print('Error! Please input a number.')  # 異常處理
        exit(1) prime_factorize(n)

注意

若不用 “global n” 將n聲明為全局變量,Pycharm將在 “prime_factorize(n)” 處提示警告:

Name 'n' can be not defined less... (Ctrl+F1)
This inspection warns about local variables referenced before assignment.

即賦值前引用局部變量。

 

運行效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM