[Java] 練習題004: 將一個正整數分解質因數

【程序4
題目:將一個正整數分解質因數。例如:輸入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的值,重複執行第一步。
import java.util.*;
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++;
        }
      }
    }
  }    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章