题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
import java.util.ArrayList; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int num = in.nextInt(); for (int i = 2; i <= num; i++) { // 判断一下这个数字是不是质数,如果是质数的话,直接输出它本身就好 if(isper(num)){ System.out.print(num+""); break; } if (num % i == 0) { num /= i; System.out.print(i+" "); i = 1; } } } // 原本是没有这个方法的,但是在上面去取质因数的时候,如果数字太大,会运行超时,所以不能循环结束,因此加一个判断它是否是质数的,这样可以节省时间 //判断质数我们不需要完全遍历这个数字,只需要对他开放,然后看开方后的数字能否对某个数字取余即可. static boolean isper(int num){ for(int i=2;i<=Math.sqrt(num);i++){ if(num%i==0) return false; } return true; } }