分解質因數演算法

2021-09-19 03:07:58 字數 500 閱讀 8312

題目:將乙個正整數分解質因數。例如:輸入90,列印出90=2 * 3 * 3 * 5。

分析:從1到n先找出最小的質因數,如果等於本身,那麼說明只有乙個質因數,如果不是,那麼將該質因數列印出來,並將n/該質因數作為新的n值進行運算。

設計步驟:

1、如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。

2、如果n!=k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,重複執行第一步。

3、如果n不能被k整除,則用k+1作為k的值,重複執行第一步。

**實現:

//將乙個正整數分解質因數  

int main()

else break;//若不能被i整除,則算下乙個i

} }

printf("%d\n",n); //這裡是列印最後乙個質因數,也就是等於i時的那個

return 0;

}

演算法 分解質因數

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

分解質因數演算法

以前寫的,有人問我程式的原理,在這裡解釋下 將n分解質因數 一般方法 i從2開始到sqrt n 的每乙個i由n試除,如果能整除就再判斷i是不是素數,如果是則i是n的乙個質因子,然後n n i 再將i歸位回2 再尋找n的質因子 我的優化 大致思路不變,進行了一些剪枝,首先還是i從2開始到sqrt n ...

分解質因數

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