题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); for (int i = 2; i <= (int)Math.sqrt(n); i++) { //i从2开始往上自增,故不需要再额外判断i是否为质数 //因为若其不为质数,必定可以分解为两个小于i的整数,而小于i的整数必须在之前的循环中就已经分解出来 while (n % i == 0) { n = n / i; System.out.print(i + " "); } } //循环条件为i <= (int)Math.sqrt(n),需再对循环结束时的n进行判断 //如果n为1,说明上述循环中已完成因式分解 //若n不为1,说明最后剩余的n为质数,需补充进结果里 System.out.print(n == 1 ? "" : "" + n); } } // 您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。 // import java.util.*; // public class Main { // public static void main(String[] args) { // Scanner in = new Scanner(System.in); // int n = in.nextInt(); // for (int i = 2; i <= n; i++) { // while (n % i == 0 && isPrime(i)) { // n = n / i; // System.out.print(i + " "); // } // } // } // public static boolean isPrime(int k) { // for (int j = 2; j <= (int)Math.sqrt(k); j++) { // if (k % j == 0) { // return false; // } // } // return true; // } // }#质数因子#