題目:將一個正整數分解質因數。例如:輸入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 PrimeSplitTest{
public static void main(String[] args){
int x; //定義一個整型變量
Scanner in = new Scanner(System.in);//定義從鍵盤輸入
System.out.print("請輸入一個正整數:");//提示
x = in.nextInt();//將從鍵盤輸入的數賦值給x
new PrimeSplit(x); //匿名初始化一個對象,還有參數的構造函數
}
}
class PrimeSplit{
int k = 2; //將最小的質數賦值給k
public PrimeSplit(int x){
//小於等於1的數不可以分解
if(x<=1){
System.out.println(x+"是無效的被分解數");
}
//如果輸入的是最小質數2,
else if(x==2){
System.out.println(x+"分解後的質因數爲: 1*"+x);
}else {
//1是所有的正整數的質數
System.out.print(x+"分解後的質因數爲: 1");
while(k<=x){
//輸入的數可以被k整除
if(x%k==0){
//將k添加到結果中
System.out.print("*"+k);
x = x/k;//除以最小質數後重新循環
}
//如果k不能被x整除,就將k++
else{
k++;
}
}
}
}
}