mathball
Version:
A JavaScript library for Competitive Programming
43 lines (32 loc) • 628 B
JavaScript
;
/**
* Find nth Ugly Number
*/
var validate = require('../validation/positive-integer');
var maxDivide = function maxDivide(num, a) {
while (num % a === 0) {
num /= a;
}
return num;
};
var isUgly = function isUgly(num) {
num = maxDivide(num, 2);
num = maxDivide(num, 3);
num = maxDivide(num, 5);
return num === 1;
};
var getNthUglyNumber = function getNthUglyNumber(n) {
var count = 1;
var i = 1;
while (n > count) {
i += 1;
if (isUgly(i)) {
count += 1;
}
}
return i;
};
exports.find = function (n) {
validate(n, 'ugly');
return getNthUglyNumber(n);
};