很经典的一个问题,要考虑到是否素数,要用到HashMap用法。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int num =in.nextInt();
Map<Integer, Integer> mp=solve(num);
StringBuilder sb=new StringBuilder();
for(Map.Entry<Integer,Integer> entry:mp.entrySet()) {
int k =entry.getKey();
int v =entry.getValue();
for(int i=0;i<v;i++) {
sb.append("*"+k);
}
}
System.out.println(mp);
System.out.println(sb.substring(1));
}
private static Map<Integer, Integer> solve(int num) {
HashMap<Integer, Integer> ha=new HashMap<Integer, Integer>();
for(int i=2;i*i<=num;i++) {
while(num%i==0) {
Integer v =ha.get(i);
if(v== null) {
ha.put(i, 1);
}else {
ha.put(i,v+1);
}
num/=i;
}
}
return ha;
}
}