UNPKG

mathball

Version:

A JavaScript library for Competitive Programming

43 lines (32 loc) 628 B
'use strict'; /** * 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); };