Back to all solutions
#625 - Minimum Factorization
Problem Description
Given a positive integer num, return the smallest positive integer x whose multiplication of each digit equals num. If there is no answer or the answer is not fit in 32-bit signed integer, return 0.
Solution
/**
* @param {number} num
* @return {number}
*/
var smallestFactorization = function(num) {
if (num < 2) return num;
const digits = [];
for (let divisor = 9; divisor > 1; divisor--) {
while (num % divisor === 0) {
digits.push(divisor);
num /= divisor;
}
}
if (num > 1) return 0;
let result = 0;
for (const digit of digits.reverse()) {
result = result * 10 + digit;
if (result > 2**31 - 1) return 0;
}
return result;
};