因为如果它不是质数,那么它一定可以表示成两个数(除了1和它本身)相乘,这两个数必然有一个小于等于 它的平方根。只要找到小于或等于的那个就行了
package com.cskaoyan;
import java.util.Scanner;
public class Solution4 {
//分解质因子
//https://www.cnblogs.com/digulove/p/8012711.html
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()){
int number=scanner.nextInt();
factor(number);
}
}
private static void factor(int number) {
for (int i=2;i<=number;i++){
if (number%i==0&&isSuShu(i)){
System.out.print(i);
if(!isSuShu(number)){
System.out.print("*");
}
factor(number/i);
//一定要加,否则第一次分解得到的数会因为for循环再次被分解
return;
}
}
}
private static boolean isSuShu(int number){
for (int i=2;i<=Math.sqrt(number);i++){
if (number%i==0){
return false;
}
}
return true;
}
}