功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
import java.util.Scanner;
import java.util.HashMap;
import java.util.*;
import java.util.Queue;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n =in.nextInt();
boolean isFlag = true;
boolean isF=true;
Queue queue =new LinkedList<>();
for (int i = 2; i <= n; i++) {
//优化二: 对本身是质数的自然数是有效的
for (int m = 2; m <= Math.sqrt(n); m++) {
if(n%m==0){
isF=false;
break;
}
}
if(isF){
queue.add(n);
n=n/n;
break;
}
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {
isFlag = false;
break; // 优化一 :满足条件跳出循环。只对本身非质数的自然数是有效的
}
}
if (isFlag&&n%i==0) {
while(n%i==0){
n=n/i;
queue.add(i);
}
// System.out.println(i);
}
isF=true;
isFlag = true;
}
while(!queue.isEmpty()){
System.out.print(queue.poll());
System.out.print(" ");
}
}
}