I am trying to solve the LeetCode ugly number challenge II. I came up with an algorithm of my own, seems working in theory but does not. I want to know why. I implemented this in Java but I write in Python normally, so if you correct the Java code, would appreciate.
The problem statement is:
"Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5.
Example:
Input: n = 10 Output: 12 Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers. Note:
1 is typically treated as an ugly number. n does not exceed 1690."
This is my code:
class Solution {
    public int nthUglyNumber(int n) {
        // Gather all the uglies in one place
        int[] uglies = new int[n];
        // Set first one as one
        uglies[0] = 1;
        // Start filling
        for (int i = 1; i < uglies.length - 1; i++) {
            int num = i;
            if (isUgly(num) == true) {
                uglies[i] = num;
            } else {
                while (isUgly(num) == false) {
                    num++;
                }
                uglies[i] = num;
                System.out.println(uglies[i]);
            }
        }
        return uglies[uglies.length - 1];
    }
    public boolean isUgly(int m) {
        boolean ans = false;
        // Check if the number is divisible by an integer other than 2,3 or 5
        // Simply iterate through numbers smaller than n to find a smaller divisor
        for (int i = 2; i < m; i++) {
            // If n is divisable by i and i is not a multiple of 2,3 or 5
            boolean other_divisor = (m % i == 0) && (i % 2 != 0 || i % 3 != 0 || i % 5 != 0);
            if (other_divisor == true) {
                ans = false;
            } else {
                ans = true;
            }
        }
        return ans;
    }
}
So I basically made a function isUgly(n), which takes a number and checks if it is ugly by finding out if it has a divisor other than 2,3,5. If there is, then it should not be an ugly number. Than in the main body I go over all integers and check if they are ugly. If they are, I add them to an array until I fill out the n-th position. Would appreciate if corrected.