import java.util.*;
public class Main {
static HashMap
<Long, Long
> primeFactors
(long n
) { HashMap
<Long, Long
> map
= new HashMap
<>();
while (n % 2 == 0) {
map.put(2L, map.getOrDefault(2L, 0L) + 1);
n /= 2;
}
long lim
= (long) Math.
sqrt(n
); for (long i = 3; i <= lim; i += 2) {
while (n % i == 0) {
map.put(i, map.getOrDefault(i, 0L) + 1);
n /= i;
}
}
if (n > 2) map.put(n, map.getOrDefault(n, 0L) + 1);
return map;
}
public static void main
(String[] args
) { long n = 18;
HashMap
<Long, Long
> res
= primeFactors
(n
); for (Map.
Entry<Long, Long
> e
: res.
entrySet()) { System.
out.
println(e.
getKey() + " " + e.
getValue()); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoKICAgIHN0YXRpYyBIYXNoTWFwPExvbmcsIExvbmc+IHByaW1lRmFjdG9ycyhsb25nIG4pIHsKICAgICAgICBIYXNoTWFwPExvbmcsIExvbmc+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKCiAgICAgICAgd2hpbGUgKG4gJSAyID09IDApIHsKICAgICAgICAgICAgbWFwLnB1dCgyTCwgbWFwLmdldE9yRGVmYXVsdCgyTCwgMEwpICsgMSk7CiAgICAgICAgICAgIG4gLz0gMjsKICAgICAgICB9CgogICAgICAgIGxvbmcgbGltID0gKGxvbmcpIE1hdGguc3FydChuKTsKICAgICAgICBmb3IgKGxvbmcgaSA9IDM7IGkgPD0gbGltOyBpICs9IDIpIHsKICAgICAgICAgICAgd2hpbGUgKG4gJSBpID09IDApIHsKICAgICAgICAgICAgICAgIG1hcC5wdXQoaSwgbWFwLmdldE9yRGVmYXVsdChpLCAwTCkgKyAxKTsKICAgICAgICAgICAgICAgIG4gLz0gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG4gPiAyKSBtYXAucHV0KG4sIG1hcC5nZXRPckRlZmF1bHQobiwgMEwpICsgMSk7CgogICAgICAgIHJldHVybiBtYXA7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGxvbmcgbiA9IDE4OwogICAgICAgIEhhc2hNYXA8TG9uZywgTG9uZz4gcmVzID0gcHJpbWVGYWN0b3JzKG4pOwogICAgICAgIGZvciAoTWFwLkVudHJ5PExvbmcsIExvbmc+IGUgOiByZXMuZW50cnlTZXQoKSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZS5nZXRLZXkoKSArICIgIiArIGUuZ2V0VmFsdWUoKSk7CiAgICAgICAgfQogICAgfQp9Cg==