Java分解質因數
阿新 • • 發佈:2019-02-10
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
分析:對n進行分解質因數,應先找到一個最小的質數k,然後按下述步驟完成:
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
(2)如果n>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作為新的正整數你n,重複執行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重複執行第一步。
public class ResolvePrime { public static void main(String[] args) { System.out.println(resolvePrime(90)); System.out.println(resolvePrime(134)); System.out.println(resolvePrime(81)); } /** * 分解質因數 * @param num 待分解的數字 * @return 分解後的數字結果 */ public static String resolvePrime(int num) { // 定義結果字串快取物件,用來儲存結果字元 StringBuffer sb = new StringBuffer(num + "="); // 定義最小素數 int i = 2; // 進行輾轉相除法 while (i <= num) { // 若num 能整除 i ,則i 是num 的一個因數 if (num % i == 0) { // 將i 儲存進sb 且 後面接上 * sb.append(i + "*"); // 同時將 num除以i 的值賦給 num num = num / i; // 將i重新置為2 i = 2; } else { // 若無法整除,則i 自增 i++; } } // 去除字串快取物件最後的一個*,將結果返回 return sb.toString().substring(0, sb.toString().length() - 1); } }
輸出結果90=2*3*3*5 134=2*67 81=3*3*3*3