একটি সংখ্যা যার মৌলিক গুণনীয়ক হয় 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] এর ক্রমানুসারে 7 তম কুৎসিত সংখ্যা হল 8৷
এই সমস্যা সমাধানের পদ্ধতি
এই সমস্যাটি সমাধান করার একটি সহজ পদ্ধতি হল প্রদত্ত সংখ্যাটি 2 বা 3 বা 5 দ্বারা বিভাজ্য কিনা এবং প্রদত্ত সংখ্যা পর্যন্ত ক্রমটি ট্র্যাক করা। এখন সংখ্যাটি একটি কুৎসিত সংখ্যার সমস্ত শর্ত পূরণ করে কিনা তা সন্ধান করুন, তারপর সংখ্যাটিকে আউটপুট হিসাবে ফেরত দিন৷
- Nth কুৎসিত সংখ্যা খুঁজে পেতে একটি 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; } // 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.