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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
AC代码:
class Solution {
public:
bool isUgly(int num) {
if(num==0)
return false;
while(num!=1)
{
if(num%2==0)
num=num/2;
else if(num%3==0)
num=num/3;
else if(num%5==0)
num=num/5;
else
break;
}
return num==1;
}
};
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.
AC代码:
class Solution
{
public:
int minNum(int x,int y)
{
return x<y?x:y;
}
int nthUglyNumber(int n)
{
if(n==0)
return 0;
int *count=new int[n];
count[0]=1;
int two=0;
int three=0;
int five=0;
int sum=1;
int min=0;
while(sum<n)
{
min=minNum(minNum(count[two]*2,count[three]*3),count[five]*5);
if(min>count[sum-1])
{
count[sum]=min;
++sum;
}
if(min==count[two]*2)
++two;
else if(min==count[three]*3)
++three;
else
++five;
}
return count[sum-1];
}
};
其他Leetcode题目AC代码:https://github.com/PoughER/leetcode