將一個正整數分解質因數最簡易明白的演算法--java編寫
阿新 • • 發佈:2019-01-10
import java.awt.List; import java.util.ArrayList; import java.util.Scanner; /** * 將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5 * */ public class 分解質因數{ private static ArrayList<Integer> list=new ArrayList<Integer>();//儲存質數 public static void main(String args[]){ try { int in; Scanner input = new Scanner(System.in); in=input.nextInt(); if(in>2){ method(in);//輸入90,用method方法分解 for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); }}else { System.out.println("請輸出大於1的正整數"); } } catch (Exception e) { // TODO Auto-generated catch block System.out.println("請輸出大於1的正整數"); } } public static void method(int x){ if(!isZhiShu(x)){//判斷 如果不是指數繼續分解,不是的話直接結束 for(int i=2;i<=x/2;i++) { if(x%i==0){ int f=x/i; list.add(i); method(f);//使用遞迴 break; } }}else { list.add(x); } } /** * 將判斷是否為質數 * */ public static boolean isZhiShu(int f){ for(int i=2;i<=f/2;i++){ if(f%i==0){ return false; } } return true; } }