分解質因數演算法

2021-09-30 04:07:29 字數 390 閱讀 4855

以前寫的,有人問我程式的原理,在這裡解釋下

將n分解質因數

一般方法::  i從2開始到sqrt(n)的每乙個i由n試除,如果能整除就再判斷i是不是素數,如果是則i是n的乙個質因子,然後n=n/i ,再將i歸位回2 再尋找n的質因子

我的優化:: 大致思路不變,進行了一些剪枝,首先還是i從2開始到sqrt(n)的每乙個i由n試除 ,如果i能整除n,那麼不用判斷i,i必為n的質因子,將n=n/i  ,因為n可能有多個相同的質因子,為了避免遺漏,只需將i-- ,當跳到下一步迴圈的時候與i++抵消,i的值不變,由於由2~i的每乙個數都已經判斷過是否能整除n,所以不必要再將i回退到2,只需另i在跳到下步迴圈的時候值不變即可,最後n也會被約成質數,也是乙個質因子,所以寫成程式就是開頭的**,至於效率嗎 我認為還是比較高的。。

演算法 分解質因數

定義 質因數 或質因子 在數論裡是指能整除給定正整數的質數。兩個沒有共同質因子的正整數稱為互質。因為1沒有質因子,1與任何正整數 包括1本身 都是互質。正整數的因數分解可將正整數表示為一連串的質因子相乘,質因子如重複可以指數表示。根據算術基本定理,任何正整數皆有獨一無二的質因子分解式。只有乙個質因子...

分解質因數演算法

題目 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。分析 從1到n先找出最小的質因數,如果等於本身,那麼說明只有乙個質因數,如果不是,那麼將該質因數列印出來,並將n 該質因數作為新的n值進行運算。設計步驟 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2...

分解質因數

質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...