/*题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n > k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。*/
public class Test1 {
public static void main(String[] args) {
//动态输入一个正整数
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个大于1的正整数:");
int n = scanner.nextInt();
//调用判断函数
ArrayList<Integer> arrayList = decomposeNumber(n);
//打印输出
printDecompose(arrayList,n);
}
private static void printDecompose(ArrayList<Integer> arrayList,int n) {
System.out.print(n+"=");
for (int i = 0; i < arrayList.size(); i++) {
if (i != arrayList.size()-1){
System.out.print(arrayList.get(i)+"*");
}else {
System.out.print(arrayList.get(i));
}
}
}
private static ArrayList<Integer> decomposeNumber(int n) {
int count = n;
ArrayList<Integer> arrayList = new ArrayList<>();
for (int i = 2; i <= count;) {
//如果i等于输入的数,结束循环
if (i == count){
arrayList.add(i);
break;
//count大于i时,进行因式分解
}else if (count > i){
if (count % i == 0){
arrayList.add(i);
count = count/i;
//如果不能整除,则i+1;继续判断
}else{
i++;
}
}
}
return arrayList;
}
}
Java正整数分解质因数
最新推荐文章于 2023-07-12 21:21:45 发布