今天再來做兩道類似的迴圈題目,用到了數學知識中的因數與質數。
題目:將乙個正整數分解質因數。例如:輸入90,列印出90=2*3*3*5。
程式分析:
對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於(小於的時候,繼續執行迴圈)n,則說明分解質因數的過程已經結束,另外 列印出即可。
(2)但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數n.重複執行第二步。
(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。
程式如下:
#include
int main()
}printf("\n");
return 0;}
結果為:
請輸入整數:100
100=2*2*5*5
請按任意鍵繼續. . .
根據上面的內容再來做一套擴充套件題:
題目:乙個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.程式設計找出1000以內的所有完數。
程式如下:
#include
#define n 1000
int main()
}if (i == sum)
}return 0;
}結果為:6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
請按任意鍵繼續. . .
C 分解質因數
怎樣將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n i,但n能被k整除,則應列印出i的值,並用n除以i的商,作為新的正整數...
C 分解質因數
題目描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1a2a3 a1 a2 a3 k也是從小到大的 具體可看樣例 輸入樣例 3 10 輸出樣例 3 34 22 5 56 23 7 78 222 9 33 10 25 範圍與提示 ...
分解質因數
質因數概念 每個合數都可以寫成幾個質數相乘的形式,這幾個質數就都叫做這個合數的質因數。如果乙個質數是某個數的因數,那麼就說這個質數是這個數的質因數。而這個因數一定是乙個質數。演算法原理 先根據需要分解的合數生成乙個質數表。然後依次從小到大依次除合數,每次除之後都將儲存步驟。表達不好,還是看 吧 us...