const memo = new Map();
function hitungPohonFaktor(n) {
if (memo.has(n)) {
return memo.get(n);
}
let maxSum = n;
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) {
const currentSum = n + hitungPohonFaktor(i) + hitungPohonFaktor(n / i);
if (currentSum > maxSum) {
maxSum = currentSum;
}
}
}
memo.set(n, maxSum);
return maxSum;
}
console.log(hitungPohonFaktor(6));
console.log(hitungPohonFaktor(12));
console.log(hitungPohonFaktor(16));
console.log(hitungPohonFaktor(18));
console.log(hitungPohonFaktor(24));
console.log(hitungPohonFaktor(36));
console.log(hitungPohonFaktor(48));
console.log(hitungPohonFaktor(64));
Y29uc3QgbWVtbyA9IG5ldyBNYXAoKTsKCmZ1bmN0aW9uIGhpdHVuZ1BvaG9uRmFrdG9yKG4pIHsKICBpZiAobWVtby5oYXMobikpIHsKICAgIHJldHVybiBtZW1vLmdldChuKTsKICB9CgogIGxldCBtYXhTdW0gPSBuOwoKICBmb3IgKGxldCBpID0gMjsgaSA8PSBNYXRoLnNxcnQobik7IGkrKykgewogICAgaWYgKG4gJSBpID09PSAwKSB7CiAgICAgIGNvbnN0IGN1cnJlbnRTdW0gPSBuICsgaGl0dW5nUG9ob25GYWt0b3IoaSkgKyBoaXR1bmdQb2hvbkZha3RvcihuIC8gaSk7CgogICAgICBpZiAoY3VycmVudFN1bSA+IG1heFN1bSkgewogICAgICAgIG1heFN1bSA9IGN1cnJlbnRTdW07CiAgICAgIH0KICAgIH0KICB9CiAgCiAgbWVtby5zZXQobiwgbWF4U3VtKTsKICByZXR1cm4gbWF4U3VtOwp9Cgpjb25zb2xlLmxvZyhoaXR1bmdQb2hvbkZha3Rvcig2KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDEyKSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDE2KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDE4KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDI0KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDM2KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDQ4KSk7CmNvbnNvbGUubG9nKGhpdHVuZ1BvaG9uRmFrdG9yKDY0KSk7