diff --git a/C++/ugly_numbers b/C++/ugly_numbers new file mode 100644 index 0000000..446fc9b --- /dev/null +++ b/C++/ugly_numbers @@ -0,0 +1,53 @@ +// C++ program to find nth ugly number +#include +using namespace std; + +// This function divides a by greatest +// divisible power of b +int maxDivide(int a, int b) +{ + while (a % b == 0) + a = a / b; + + return a; +} + +// Function to check if a number is ugly or not +int isUgly(int no) +{ + no = maxDivide(no, 2); + no = maxDivide(no, 3); + no = maxDivide(no, 5); + + return (no == 1) ? 1 : 0; +} + +// Function to get the nth ugly number +int getNthUglyNo(int n) +{ + int i = 1; + + // Ugly number count + int count = 1; + + // Check for all integers until ugly + // count becomes n + while (n > count) + { + i++; + if (isUgly(i)) + count++; + } + return i; +} + +// Driver Code +int main() +{ + + // Function call + unsigned no = getNthUglyNo(150); + cout << "150th ugly no. is " << no; + return 0; +} +