Python分解質(zhì)因數(shù)
如何利用Python實(shí)現(xiàn)分解質(zhì)因數(shù)呢? 首先要知道幾個(gè)引理 1.素?cái)?shù)定義:除了一和本身外沒有其他公因數(shù)(根據(jù)定義1不是素?cái)?shù) 2是素?cái)?shù)) 2.任何大于2的合數(shù)都能分解成至少兩個(gè)素?cái)?shù)相乘(例如 20=2×2×5) 3,分解質(zhì)因數(shù)具有唯一性 例如20=2×2×5這種素分解是唯一的 二,分解的數(shù)學(xué)原理 以 20=2×2×5舉例 第一步找到20 所有的因數(shù) 2 4 5 10 第二步找到20所有素因子 2 5 第三步用20/第一個(gè)素因子 20/2=10 用得到的結(jié)果繼續(xù)除第一個(gè)素因子 10/2=5 5無法繼續(xù)被2整除 第四步,用第三步得到的迭代結(jié)果除第二個(gè)素因子 5/5=1 1無法被5整除 所以下面進(jìn)一步檢驗(yàn)下一個(gè)素因子由于只有兩個(gè)素因子所以到此結(jié)束 三,如何利用Python實(shí)現(xiàn)這個(gè)算法 1.編寫一個(gè)判斷是否為素?cái)?shù)的pri函數(shù) 2編寫一個(gè)求任意數(shù)因數(shù)的getfactor函數(shù) 3編寫一個(gè)求素因數(shù)的prifactor函數(shù) 4編寫最終的素分解f函數(shù) 第一步到第三步
最終 編寫素分解函數(shù)f的while循環(huán)
這里利用if嵌套if實(shí)現(xiàn)迭代 四,輸入數(shù)據(jù)輸出結(jié)果 輸入20
輸入7(不是合數(shù))
輸入 100
調(diào)試測(cè)試數(shù)據(jù)輸出結(jié)果全部正確(?)