fork download
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Scanner;
  5.  
  6. public class Main {
  7. static void fact(int n, HashMap<Integer, Integer> map) {
  8. List<Integer> list = new ArrayList<>();
  9.  
  10. while (n % 2 == 0) {
  11. list.add(2);
  12. n /= 2;
  13. }
  14.  
  15. for(int i = 3; i <= (int) Math.sqrt(n); i++) {
  16. while (n % i == 0) {
  17. list.add(i);
  18. n /= i;
  19. }
  20. }
  21.  
  22. if (n > 2) list.add(n);
  23.  
  24. for(int i : list) {
  25. if (map.get(i) == null) map.put(i, 1);
  26. else map.put(i, map.get(i) + 1);
  27. }
  28. }
  29.  
  30. static boolean checkPossible(HashMap<Integer, Integer> map1, HashMap<Integer, Integer> map2) {
  31. for(int i : map1.keySet()) {
  32. if ((i > 5) && (map1.get(i) != map2.get(i))) return false;
  33. }
  34.  
  35. for(int i : map2.keySet()) {
  36. if ((i > 5) && (map2.get(i) != map1.get(i))) return false;
  37. }
  38.  
  39. return true;
  40. }
  41.  
  42. public static void main(String[] args) {
  43. Scanner input = new Scanner(System.in);
  44. String[] in = input.nextLine().split("\\s+");
  45. int a = Integer.valueOf(in[0]);
  46. int b = Integer.valueOf(in[1]);
  47. HashMap<Integer, Integer> map1 = new HashMap<>();
  48. HashMap<Integer, Integer> map2 = new HashMap<>();
  49. fact(a, map1);
  50. fact(b, map2);
  51.  
  52.  
  53. if (checkPossible(map1, map2)) {
  54. int count = 0;
  55. for(int i : map2.keySet()) {
  56. if (map1.get(i) == null) {
  57. map1.put(i, map2.get(i));
  58. } else {
  59. map1.put(i, Math.abs(map1.get(i) - map2.get(i)));
  60. }
  61. }
  62. for(int i : map1.values()) count += i;
  63. System.out.println(count);
  64. } else System.out.println(-1);
  65. }
  66. }
Success #stdin #stdout 0.13s 49456KB
stdin
20 30
stdout
2