素数的分解

很经典的一个问题,要考虑到是否素数,要用到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) {
    
    
	// TODO Auto-generated method stub
	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;
}
}

猜你喜欢

转载自blog.csdn.net/weixin_45952706/article/details/109122905