将一个正整数分解质因数最简易明白的算法--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;
}

}

猜你喜欢

转载自blog.csdn.net/MR_zbh/article/details/53007083
今日推荐