看了以上所有解答,其实都不完整。
这题要满足的条件有:
1.时间效率
2.超大质数(比如最后一个试验用例是2*10000000007这样的)
主要的点有:
1. 减少循环次数(循环我用+2不是+1,只需要处理一个特殊情况,就是2+2)
2. 当遭遇远大于sqrt(input) 的超大质数时候做一特殊处理分支,即循环a/=i之后,a的最终值如果不是1,则a的最终值就是那个超大质数。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String result = "";
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLong()) { // 注意 while 处理多个 case
            Long a = in.nextLong();
            Long b = (long)Math.sqrt(a);
            for(int i=2;i<= b;i=i+2){
                if(i==4){
                   i=3; 
                }

                while (a % i == 0){
                  result= result+i+" ";
                 a/=i;


                }
            }
            if (result.trim() == "" ||result==null)
               System.out.println(a); 
            else  if (a!=1)   
              System.out.println(result+a);
            else 
              System.out.println(result);  
        }
    }
}