1. 程式人生 > >將一個正整數分解質因數最簡易明白的演算法--java編寫

將一個正整數分解質因數最簡易明白的演算法--java編寫


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;
}

}