import java.util.HashMap;
import java.util.Map;
public class Main {
public static HashMap
<Long, Long
> primeFactors
(long n
) { HashMap
<Long, Long
> factorCount
= new HashMap
<>();
while (n % 2 == 0) {
factorCount.put(2L, factorCount.getOrDefault(2L, 0L) + 1);
n /= 2;
}
for (long i
= 3; i
<= Math.
sqrt(n
); i
+= 2) { while (n % i == 0) {
factorCount.put(i, factorCount.getOrDefault(i, 0L) + 1);
n /= i;
}
}
if (n > 2) {
factorCount.put(n, factorCount.getOrDefault(n, 0L) + 1);
}
return factorCount;
}
public static void main
(String[] args
) { long n =50;
HashMap
<Long, Long
> factors
= primeFactors
(n
);
for (Map.
Entry<Long, Long
> entry
: factors.
entrySet()) { System.
out.
println(entry.
getKey() + " ^ " + entry.
getValue()); }
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLk1hcDsKCnB1YmxpYyBjbGFzcyBNYWluIHsKCiAgICBwdWJsaWMgc3RhdGljIEhhc2hNYXA8TG9uZywgTG9uZz4gcHJpbWVGYWN0b3JzKGxvbmcgbikgewogICAgICAgIEhhc2hNYXA8TG9uZywgTG9uZz4gZmFjdG9yQ291bnQgPSBuZXcgSGFzaE1hcDw+KCk7CgogICAgICAgIHdoaWxlIChuICUgMiA9PSAwKSB7CiAgICAgICAgICAgIGZhY3RvckNvdW50LnB1dCgyTCwgZmFjdG9yQ291bnQuZ2V0T3JEZWZhdWx0KDJMLCAwTCkgKyAxKTsKICAgICAgICAgICAgbiAvPSAyOwogICAgICAgIH0KCiAgICAgICAgZm9yIChsb25nIGkgPSAzOyBpIDw9IE1hdGguc3FydChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgIHdoaWxlIChuICUgaSA9PSAwKSB7CiAgICAgICAgICAgICAgICBmYWN0b3JDb3VudC5wdXQoaSwgZmFjdG9yQ291bnQuZ2V0T3JEZWZhdWx0KGksIDBMKSArIDEpOwogICAgICAgICAgICAgICAgbiAvPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAobiA+IDIpIHsKICAgICAgICAgICAgZmFjdG9yQ291bnQucHV0KG4sIGZhY3RvckNvdW50LmdldE9yRGVmYXVsdChuLCAwTCkgKyAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWN0b3JDb3VudDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgbG9uZyBuID01MDsKICAgICAgICBIYXNoTWFwPExvbmcsIExvbmc+IGZhY3RvcnMgPSBwcmltZUZhY3RvcnMobik7CgogICAgICAgIGZvciAoTWFwLkVudHJ5PExvbmcsIExvbmc+IGVudHJ5IDogZmFjdG9ycy5lbnRyeVNldCgpKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlbnRyeS5nZXRLZXkoKSArICIgXiAiICsgZW50cnkuZ2V0VmFsdWUoKSk7CiAgICAgICAgfQogICAgfQp9Cg==