算法提高 质因数2
描述
将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出。最后输出质因数的个数。
输入
输入描述:
一行,一个正整数
输入样例:
66
输出
输出描述:
两行,第一行为用空格分开的质因数
第二行为质因数的个数
输出样例:
2 3 11
3
思路:
开始没有写i–;导致无法重复录入,比如8应该分解为2 2 2;
但是因为没有i–;就变为了2 4。
还是要仔细一点
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
List<Integer> list=new ArrayList<>();
int M=N;
for (int i=2;i<=N;i++){
if (M%i==0){
if (M/i==1){
list.add(i);
break;
}
list.add(i);
M=M/i;
i--;//非常重要的一步
}
}
for (int i:list){
System.out.print(i+" ");
}
System.out.println();
System.out.println(list.size());
}
}