एक संख्या जिसके अभाज्य गुणनखंड 2, 3 या 5 हैं, उसे अगली संख्या कहा जाता है। कुछ अगली संख्याएँ हैं: 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, आदि।
हमारे पास एक संख्या N है और कार्य अगली संख्याओं के क्रम में Nवीं अगली संख्या खोजना है।
उदाहरण के लिए:
इनपुट-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] में 7वीं अगली संख्या 8 है।
इस समस्या को हल करने का दृष्टिकोण
इस समस्या को हल करने का एक सरल दृष्टिकोण यह जांचना है कि दी गई संख्या 2 या 3 या 5 से विभाज्य है या नहीं और दी गई संख्या तक क्रम को ट्रैक करते रहें। अब जांचें कि क्या संख्या अगली संख्या की सभी शर्तों को पूरा करती है, तो संख्या को आउटपुट के रूप में वापस करें।
- Nवीं अगली संख्या खोजने के लिए संख्या N का इनपुट लें।
- एक बूलियन फंक्शन isUgly(int n) एक संख्या 'n' को इनपुट के रूप में लेता है और यदि यह अगली संख्या है तो True वापस करता है, अन्यथा False।
- एक पूर्णांक फंक्शन 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; } // जांचें कि संख्या 2 से विभाज्य है या नहीं 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.