题解 | 质数因子
核心理念:
- 从最小的质因数i=2开始,用n不断求余,同时将n变小,而i变大
- 采用两次循环,其i!=n是为了防止 25这种分解成两个质因数的,最后n会变成1,会把1打印出来
- 需要的case:
- 90 一般情况
- 25 两个相同的质因数
- 13 本身就是质因数的情况
- 167521 较大的质因数
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); getPrimeNumer(in.next()); } // 核心: 从2开始,挨个求余,同时把n不断缩小 // case: 90,9,25,13,47 public static void getPrimeNumer(String num){ int n = Integer.parseInt(num); // for循环从2到n for(int i=2;i<n;i++){ // while循环: 持续循环,i!=n,i==n的话,在质因数相同的情况下,把1加上 while(i!=n){ // n对i求余等于0,则打印 if(n%i==0){ System.out.print(i+" "); // 缩小n值 n=n/i; }else { break; } } } System.out.print(n); } }