Question

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.

Example 1:

Input: 6
Output: true
Explanation: 6 = 2 × 3

Example 2:

Input: 8
Output: true
Explanation: 8 = 2 × 2 × 2

Example 3:

Input: 14
Output: false 
Explanation: 14 is not ugly since it includes another prime factor 7.

Thinking:

  • Method 1:递归
class Solution {
    public boolean isUgly(int num) {
        if(num == 1) return true;
        if(num <= 0) return false;
        if(num == 2 || num == 5 || num == 3) return true;
        if(num % 2 == 0) return isUgly(num / 2);
        if(num % 3 == 0) return isUgly(num / 3);
        if(num % 5 == 0) return isUgly(num / 5);
        return false;
    }
}

Second time

  1. I still used the method of Recursion.
    class Solution {
     public boolean isUgly(int num) {
         if(num == 1) return true;
         if(num <= 0) return false;
         if(num % 2 == 0) return isUgly(num / 2);
         else if(num % 3 == 0) return isUgly(num / 3);
         else if(num % 5 == 0) return isUgly(num / 5);
         else return false;
     }
    }