題目:將乙個正整數分解質因數。例如:輸入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...