主要是使用短除法来进行求解,不断除y,直到target的值为1为止

  1. 从y = 2开始: (1) target % y == 0,也就是意味着y是target的因子 (2) 如果(1)不成立,也就是y不是target的目标因子,这个时候需要对y进行更新: 如果 y^2 > target: 意味着最后的因子就是target,直接执行 y = target即可 否则y递增:y++

import java.util.*;
public class Main{
    public static void main(String[] args) {
        // 处理输入
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            // 获取需要求解的值
            int target = sc.nextInt();
            int y = 2;// 因子从2开始算
            while(target != 1){ // 短除法,除到目标值为1为止
                if(target % y == 0) // 能能够整除2
                {
                    System.out.print(y+" ");
                    target /= y;
                }else{// 更新y的值
                    if(y > target / y) y = target;
                    else y++;
                }
            }
        }
    }
}