Rezolvare - Laborator FAIMA #7 / An 1 Semestru 1


public class RezolvareFAIMA {

    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        String nl = "";
        while (!nl.equals("stop")) {
            nl = input.nextLine().toLowerCase();
            try {
                int n = Integer.parseInt(nl);
                System.out.println(aranjareFactorizare(factorizareSimpla(n)));
            } catch (Exception e) {
                if (!nl.equals("stop")) {
                    System.out.println("Numar incorect");
                }
            }
        }
        System.out.println("Program terminat. O zi buna!");
    }
    
    private static List< Integer > factorizareSimpla(Integer n){        
        if(n==1){
            return new LinkedList< Integer >();
        }else{
            for(int i=2;i<=n;i++){
                if(n%i==0){
                    List rec=factorizareSimpla(n/i);
                    rec.add(i);
                    return rec;
                }
            }
            return null;
        }
    }
    
    private static String aranjareFactorizare(List< Integer > factorizare){        
        HashMap< Integer,Integer > factoriUnici=new HashMap< Integer,Integer >();
        for(Integer factor:factorizare){
            if(factoriUnici.containsKey(factor)){
                factoriUnici.put(factor, factoriUnici.get(factor)+1);
            }else{
                factoriUnici.put(factor,1);
            }
        }
        String ret="";
        for(Integer factorUnic:factoriUnici.keySet()){
            ret+=""+factorUnic+(factoriUnici.get(factorUnic)>1?"^"+factoriUnici.get(factorUnic):"")+"*";
        }
        return ret.substring(0,ret.length()-1);
    }
}

0 comentarii: