Sponsored
Sponsored
This approach involves dividing the number by its prime factors (2, 3, and 5) as long as it is divisible by them. If after removing all these factors, the number reduces to 1, it is an ugly number; otherwise, it is not.
Time Complexity: O(log n).
Space Complexity: O(1).
1function isUgly(n) {
2 if (n <= 0) return false;
3 const primes = [2, 3, 5];
4 for (const p of primes) {
5 while (n % p === 0) {
6 n /= p;
7 }
8 }
9 return n === 1;
10}
This JavaScript solution iterates over the prime factors and divides n by each, verifying if n ends up as 1 to classify it as an ugly number.
This alternative approach involves using recursion to systematically divide the number by 2, 3, and 5. By tracing back all divisions reaching 1, this method can also verify the ugliness of a number.
Time Complexity: O(log n).
Space Complexity: O(log n), due to recursion stack.
1function
The JavaScript version utilizes a closure helper function, recursively analyzing the prime divisibility of n until settling on its ugliness based on remaining value 1.