首先我們的算法是:例如 輸入的是 90
1.找到90的最小公約數(1除外)是 2
2.然后把公約數 2 輸出
3.接着用 90 / 2 = 45 (如果這里是素數,就結束,否則繼續找最小公約數)
4.找到45 的最小公約數 (最小公約數是 3)
5.輸出 3 接着重復第3步...........(反正只要第3步是素數,就結束掉)
話不多說,都在代碼里了。
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
//輸入
System.out.println("請輸入一個大於3的數:");
int number = input.nextInt();
fengjie(number);
}
public static void fengjie(int j){
for(int i=2;i<Math.sqrt(j);i++){
//這個if是找最小公約數
if(j%i == 0){
System.out.print(i+"*");
//這個if是判斷他是不是素數,如果是素數,就將這個數輸出,然后就執行break;了
if(isPrime(j/i)){
System.out.print(j/i);
}
else
//如果不是素數,就繼續分解,找公約數
fengjie(j/i);
break;
}
}
}
//判斷是否是素數
public static boolean isPrime(int n){
for(int i=2;i<Math.sqrt(n);i++)
{
if(n%i == 0)
return false;
}
return true;
}
覺得這個題目應該對於初學者來說有一點小小的幫助
要是有哪里寫錯了,或者哪里不懂的地方的地方,可以給我留言,我會改正,謝謝大家。
