Java 课程,每天解读一个简单Java之正整数分解质因数
【题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 】
package ytr250804;
import java.util.ArrayList;
import java.util.Scanner;
public class PrimeFactorization {
public static void main(String[] args) {
try (
//1.创建Scanner对象过去用户输入
Scanner scanner = new Scanner(System.in)) {
System.out.print("请输入一个正整数(>=2):");
int number=scanner.nextInt();
//2.验证输入是否合法
if(number<2)
{
System.out.println("输入的数必须大于2");
return;
}
//3.保存原始值用于最终输出
int original =number;
//4.存储质因数的动态数组
ArrayList<Integer> factors = new ArrayList<>();
//5从最小的质数2开始分解
int factor =2;
//6 分解过程,当number>1时继续分解
while(number>1) {
if(number%factor == 0) {
//6.1如果当前质数能整除number
factors.add(factor);// 添加到质因数列表
number/=factor;// 更新number为商
}else {
// 6.2 如果不能整除,尝试下一个可能的质数
factor++;
}
}
// 7. 构建输出字符串
StringBuilder result = new StringBuilder();
result.append(original).append("=");
// 8. 拼接所有质因数(用*连接)
for(int i =0 ;i<factors.size();i++) {
if (i>0) {
result.append("*");
}
result.append(factors.get(i));
}
//输出结果
System.out.println(result);
}
}
}