題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
阿新 • • 發佈:2018-11-08
public class S40 {
public static void main(String args[]) {
MyMath math = new MyMath();
//math.fengjie(6);
for(int i=1;i<100;i++){
System.out.println(math.fenJieZhiYinShu(i));
}
}
}
class MyMath {
/** * 題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。自己的做法 */ public String fenJieZhiYinShu(int num) { StringBuffer stringBuffer = new StringBuffer(num + "="); int lastNum = num; for (int i = 2; i < num / 2; i++) { if (num % i == 0) { stringBuffer.append(i + "*"); num = num / i; i = 1; lastNum = num; } } //因為當最後一個數是4的時候沒法進入迴圈2<4/2不成立 if(lastNum==4){ return stringBuffer.append("2*2").toString(); } return stringBuffer.append(lastNum + "").toString(); } /** * 這個是大神做法 * @param n */ public void fengjie(int n) { for (int i = 2; i <= n / 2; i++) { if (n % i == 0) { System.out.print(i + "*"); fengjie(n / i); } } System.out.print(n); System.exit(0); } }