题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int num = in.nextInt(); int n = num; for (int i = 2; i <= Math.sqrt(num) + 1; i++) { int tmp = num % i; int div = num / i; if (tmp == 0) { System.out.print(i + " "); i = 1; // 实际上是下一次循环还从2开始,因为有i++; num = div; // 下一次循环是对除过的数进行判断 n = div; //保存除过的数,因为有可能为最后一个质数 } } if (n != 1) { System.out.print(n); //若n不等一1,那么就是本身为质数的数没有被检测到 } // 有空循环,不推荐 // for (int i = 2; i <= num; i++) { // while (num % i == 0) { // num /= i; // System.out.print(i + " "); // } // if (i <= num && i * i > num) { // System.out.print(num + " "); // break; // } // } in.close(); } }