1. 质因数的分解可以以判断是否为素数的情况的思路下进行进一步处理,因为我们知道假如一个数字不是素数那么这个数字肯定有约数,其中可以使用到map这个数据结构用来计数某个因子出现了多少次,但是map映射没有排序效果,所以后来我采用了TreeMap这个数据结构,效果与map一样它是自带排序效果的,不用自己对得到的质因数的结果进行排序,具体的代码如下:
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
primeFactor(n);
sc.close();
}
private static void primeFactor(int n) {
int t = n;
//质因数和出现次数的映射
TreeMap<Integer,Integer> map = new TreeMap<Integer,Integer>();
for(int i = 2; i <= t / 2; i++){
while(n % i == 0){
Integer v = map.get(i);
if(v == null){
map.put(i, 1);
}else{
map.put(i, v + 1);
}
n /= i;
}
}
/*System.out.println(map);*/
//使用StringBuilder可以很方便地处理字符串之后再进行输出
StringBuilder sb = new StringBuilder();
for(Map.Entry<Integer, Integer> map1 : map.entrySet()){
Integer num = map1.getKey();
/*System.out.println(num);*/
if(num != null){
for(int i = 0; i < map1.getValue(); i++){
sb.append("*").append(map1.getKey());
}
}
}
if(sb.length() != 0){
String str = sb.toString();
str = str.substring(1, str.length());
System.out.println(str);
}else{
System.out.println("没有质因数");
}
}
}