Discription
Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
. For example, 6, 8
are ugly while14
is not ugly since it includes another prime factor 7
.
Note that 1
is typically treated as an ugly number.
Solution
bool isUgly(int num) {
while (num % 2 == 0 && num)
num /= 2;
while (num % 3 == 0 && num)
num /= 3;
while (num % 5 == 0 && num)
num /= 5;
return num == 1;
}
Discription
Write a program to find the n
-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
is the sequence of the first 10
ugly numbers.
Note that 1
is typically treated as an ugly number, and n does not exceed 1690.
Solution
int nthUglyNumber(int n) {
vector<int> res(n, 1);
int index2 = 0, index3 = 0, index5 = 0;
for (int i = 1; i<n; i++) {
res[i] = min(min(res[index2] * 2, res[index3] * 3), res[index5] * 5);
if (res[i] == res[index2] * 2) index2++;
if (res[i] == res[index3] * 3) index3++;
if (res[i] == res[index5] * 5) index5++;
}
return res[n - 1];
}
GitHub-Leetcode: https://github.com/wenwu313/LeetCode