算法提高 质因数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());
    }
}










