Problem:
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.
Subscribe to see which companies asked this question
Solution:
1 class Solution { 2 public: 3 bool isUgly(int num) { 4 if(num<1) return false; 5 if(num==1) return true; 6 7 if(num%2==0) 8 return isUgly(num/2); 9 else if(num%3==0) 10 return isUgly(num/3); 11 else if(num%5==0) 12 return isUgly(num/5); 13 14 return false; 15 16 } 17 };
class Solution { public: 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; if(num==1) return true; else return false; } };