题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.ArrayList; import java.util.List; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); List<Integer> primeFactors = new ArrayList<>(); int count = 0; for (int i = 2 ; i <= num; i++) { if(i<=Math.sqrt(num)){//一直都卡在最后一个样例超时,这里判断以下如果当下的i小于num的开方再进行运算可以少去很多循环,就不会超时了。 if (num % i == 0 && isPrime(i)) { primeFactors.add(i); num = num/i; i = 1; } } } for (int prime : primeFactors) { System.out.print(prime + " "); } if (primeFactors.size() == 0) { System.out.print(num); } else{ System.out.print(num); } } public static boolean isPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } }#刷题#