একটি সংখ্যা যার মৌলিক গুণনীয়ক হয় 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.