w3resource

JavaScript: Find the nth ugly number

JavaScript Math: Exercise-101 with Solution

Find nth Ugly Number

Write a JavaScript program to find the nth ugly number.

Ugly numbers are positive numbers whose only prime factors are 2, 3 or 5. The first 10 ugly numbers are:
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ...
Note: 1 is typically treated as an ugly number.

Visual Presentation:

JavaScript Math: Find the nth ugly number.

Test Data:
(4) -> 4
(10) -> 12

Sample Solution:

JavaScript Code:

/**
 * Function to find the nth ugly number.
 * @param {number} num - The number of ugly numbers to find.
 * @returns {number} - The nth ugly number.
 */
function test(num) {
    result = [1]; // Initialize the array with the first ugly number, which is 1
    x2 = x3 = x5 = 0; // Initialize pointers for multiples of 2, 3, and 5
    while (result.length < num) { // Continue until the array contains the specified number of ugly numbers
        m2 = result[x2] * 2; // Calculate the next multiple of 2
        m3 = result[x3] * 3; // Calculate the next multiple of 3
        m5 = result[x5] * 5; // Calculate the next multiple of 5
        temp = Math.min(m2, m3, m5); // Find the smallest among the calculated multiples
        if (temp === m2) { // If the smallest is the multiple of 2, move to the next multiple of 2
            x2++;
        }
        if (temp === m3) { // If the smallest is the multiple of 3, move to the next multiple of 3
            x3++;
        }
        if (temp === m5) { // If the smallest is the multiple of 5, move to the next multiple of 5
            x5++;
        }
        result.push(temp); // Add the smallest ugly number to the result array
    }
    return result[num - 1]; // Return the nth ugly number
};  

// Test cases
n = 4;
console.log("n = " + n);
console.log("nth Ugly number is " + test(n));

n = 10;
console.log("n = " + n);
console.log("nth Ugly number is " + test(n));

Output:

n = 4
nth Ugly number is 4
n = 10
nth Ugly number is 12

Flowchart:

JavaScript: Add digits until there is only one digit.

Live Demo:

See the Pen javascript-math-exercise-101 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus.

Previous: Check a given number is an ugly number or not.
Next: Count total number of 1s from 1 to N.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/javascript-exercises/javascript-math-exercise-101.php