使用Python實現質因式分解演算法

2021-07-31 17:46:37 字數 855 閱讀 5633

本來想實現乙個其它的基本數學演算法問題,但是發現在實現之前必須得先完成分解質因式的演算法。

沒有去網上尋找什麼比較好的求解演算法,純粹是按照自己的理解寫了乙個試探性求解演算法。也就是在mit公開課中教授提到的guess-try方法。**實現如下:

#!/usr/bin/python

def primenum(num):

r_value =

for i inrange(2,num+1):

for jin range(2,i):

ifi % j == 0:

break

else:

returnr_value

def primefactorsolve(num,prime_list):

for n inprime_list:

ifnum % n == 0:

return[n,num / n]

def primedivisor(num):

prime_range= primenum(num)

ret_vale =

while numnot in prime_range:

factor_list= primefactorsolve(num,prime_range)

num =factor_list[1]

else:

printret_vale

primedivisor(120)

程式執行結果如下:

e:\workspace\01_程式語言\03_python\python_exp07>pythonpython_exp07.py

[2, 2, 2, 3, 5]

抽取測試了其他的資料,從簡單的例子計算看,結果還是準確的。

階乘因式分解

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給定兩個數n,m,其中m是乙個素數。將n 0 n 2 31 的階乘分解質因數,求其中有多少個m。注 為求冪符號。輸入 第一行是乙個整數s 0 輸出輸出m的個數 樣例輸入 3 100 5 16 2 1000000000 13 樣例...

因式分解總結

因式分解其實是乙個很簡單的應用,這裡做一下小小的總結 計算乙個數的所有因子 這裡只需要找到這個數的平方根的因子,然後再用該數分別除以每個因子,就會找到每個因子對應的另乙個因子 int a 10000 num 0 儲存n的因子 void factor int n a中從0到num 1儲存了n的所有因子...

階乘因式分解

描述 給定兩個數m,n,其中m是乙個素數。將n 0 n 10000 的階乘分解質因數,求其中有多少個m。輸入 第一行是乙個整數s 0 輸出輸出m的個數。樣例輸入 2 100 5 16 2 樣例輸出 24 15 includeint main printf d n sum return 0 剛看到這道...