java將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。


 

首先我們的算法是:例如 輸入的是 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;
}

覺得這個題目應該對於初學者來說有一點小小的幫助

要是有哪里寫錯了,或者哪里不懂的地方的地方,可以給我留言,我會改正,謝謝大家。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM