主要是使用短除法来进行求解,不断除y,直到target的值为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++;
}
}
}
}
}