正整数分解质因数

package com.itheima_04;

import javax.swing.JOptionPane;

/*
 * 正整数分解质因数
 * 	题目:
 * 		将一个正整数分解质因数.例如:户三人90,打印出90=2*3*3*5.
 * 
 * 需求分析:
 * 		对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
 * 		1).如果这个质数恰等于n,则说明分解质因数的过程已结束,打印出即可.
 * 		2).如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数,重复执行第一步;
 * 		3).如果n不能被k整除,则用k+1作为k的值,重复执行第一步.
 */

public class ResolvePrimeNumber {
	// 公有无参构造方法
	public ResolvePrimeNumber() {
	}
	//递归方法
	public void getPositive(int n) {
		//for循环,从2开始,i要小于等于n/2的商,i++
		for (int i = 2; i <= n/2 ; i++) {
			//判断n%i余数为0
			if (n%i==0) {
				System.out.print(i+"*");
				//方法的内部调用方法本身
				getPositive(n/i);
			}
		}
		System.out.print(n);
		//没有满足上面的条件:i <= n/2就转到了下面的出口
		//终止当前的虚拟机,System:static void exit(int status)
		System.exit(0);
	}
	//主方法
	public static void main(String[] args) {
		//定义字符串
		String str = "";
		//创建对象
		ResolvePrimeNumber rpn = new ResolvePrimeNumber();
		//JOptionPane:static String showInputDialog(Object message) 
		str = JOptionPane.showInputDialog("请输入N的值(输入exit退出):");
		//定义变量
		int positive = 0;
		//包裹可能出现问题的代码
		try {
			positive = Integer.parseInt(str);
		//定义异常对象:NumberFormatException
		} catch (NumberFormatException e) {
			//将此 throwable及其追踪输出至标准错误流,异常根类Throwable:void printStackTrace() 
			e.printStackTrace();
		}
		System.out.print(positive+"分解质因数: "+positive+"=");
		//调用方法
		rpn.getPositive(positive);
	}
}

猜你喜欢

转载自blog.csdn.net/guan_moyi/article/details/79899250