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 while 14
is
not ugly since it includes another prime factor 7
.
Note that 1
is typically treated as an ugly number.
bool isUgly(int num) {
if(num <= 0)
return false;
while(num % 2 == 0)
num /= 2;
while(num % 3 == 0)
num /= 3;
while(num % 5 == 0)
num /= 5;
return num == 1;
}
Ugly Number II
劍指offer -醜數
int Min(int num1,int num2,int num3)
{
int min = (num1 < num2) ? num1:num2;
min = (min < num3) ?min:num3;
return min;
}
int nthUglyNumber(int n) {
if(n <= 0)
return 0;
int ugly[n];
ugly[0] = 1;
int index = 1;
int *p2 = ugly;
int *p3 = ugly;
int *p5 = ugly;
while(index < n)
{
int min = Min(*p2 * 2,*p3 * 3,*p5 * 5);
ugly[index] = min;
while(*p2 * 2 <= ugly[index])
++p2;
while(*p3 * 3 <= ugly[index])
++p3;
while(*p5 * 5 <= ugly[index])
++p5;
++index;
}
return ugly[index - 1];
}