वह संख्या जिसका अभाज्य गुणनखंड 2, 3 या 5 हो, कुरूप संख्या कहलाती है। कुछ कुरूप संख्याएँ हैं:1, 2, 3, 4, 5, 6, 8, 10, 12, 15, आदि।
हमारे पास एक नंबर है N और कार्य बदसूरत संख्याओं के क्रम में Nth अग्ली नंबर को खोजना है।
उदाहरण के लिए:
इनपुट-1:
N = 5
आउटपुट:
5
स्पष्टीकरण:
कुरूप संख्याओं [1, 2, 3, 4, 5, 6, 8, 10, 12, 15] के क्रम में 5वीं कुरूप संख्या 5 है।
इनपुट-2:
N = 7
आउटपुट:
8
स्पष्टीकरण:
कुरूप संख्याओं [1, 2, 3, 4, 5, 6, 8, 10, 12, 15] के क्रम में सातवीं कुरूप संख्या 8 है।
इस समस्या को हल करने का तरीका
इस समस्या को हल करने का एक सरल तरीका यह है कि दी गई संख्या 2 या 3 या 5 से विभाज्य है या नहीं और दी गई संख्या तक अनुक्रम का ट्रैक रखें। अब पता लगाएं कि क्या संख्या एक बदसूरत संख्या की सभी शर्तों को पूरा करती है, फिर संख्या को आउटपुट के रूप में वापस कर दें।
- Nth अग्ली नंबर खोजने के लिए एक नंबर N का इनपुट लें।
- एक बूलियन फ़ंक्शन isUgly(int n) इनपुट के रूप में एक संख्या 'n' लेता है और अगर यह एक बदसूरत संख्या है, तो सही है, अन्यथा गलत है।
- एक पूर्णांक फ़ंक्शन findNthUgly(int n) इनपुट के रूप में 'n' नंबर लेता है और n लौटाता है आउटपुट के रूप में वें बदसूरत संख्या।
उदाहरण
public class UglyN { public static boolean isUglyNumber(int num) { boolean x = true; while (num != 1) { if (num % 5 == 0) { num /= 5; } else if (num % 3 == 0) { num /= 3; } // To check if number is divisible by 2 or not else if (num % 2 == 0) { num /= 2; } else { x = false; break; } } return x; } public static int nthUglyNumber(int n) { int i = 1; int count = 1; while (n > count) { i++; if (isUglyNumber(i)) { count++; } } return i; } public static void main(String[] args) { int number = 100; int no = nthUglyNumber(number); System.out.println("The Ugly no. at position " + number + " is " + no); } }
आउटपुट
The Ugly no. at position 100 is 1536.