অগলি নাম্বার হল সেই সংখ্যাগুলো যাদের প্রাইম ফ্যাক্টর শুধু ২, ৩ বা ৫। ১ থেকে ১৫ পর্যন্ত ১১টি অগলি নাম্বার আছে: ১, ২, ৩, ৪, ৫, ৬, ৮, ৯, ১০, ১২, ১৫। ৭, ১১, ১৩ অগলি নয় কারণ সেগুলো প্রাইম। ১৪ অগলি নয় কারণ এর প্রাইম ফ্যাক্টরে ৭ থাকে।
এই প্রোগ্রামে আমরা nth অগলি নাম্বার খুঁজে বের করার চেষ্টা করব।
ইনপুট এবং আউটপুট
ইনপুট: পদ সংখ্যা নিন। ধরা যাক ১০ আউটপুট: ১০ম অগলি নাম্বার হল ১২
অ্যালগরিদম
getUglyNumbers(n)
ইনপুট: পদ সংখ্যা।
আউটপুট: nth অগলি নাম্বার খুঁজে বের করা।
শুরু
n আকারের uglyNum অ্যারে সংজ্ঞায়িত করুন
i2 := 0, i3 := 0, i5 := 0
next2mul := 2, next3mul := 3, next5Mul := 5
next := 1
ugluNum[0] := 1
i := 1 থেকে n পর্যন্ত, করুন
next := next2Mul, next3Mul এবং next5Mul এর মধ্যে ন্যূনতম
uglyNum[i] := next
যদি next = next2Mul হয়, তবে
i2 := i2 + 1
next2mul := uglyNum[i2] * 2
যদি next = next3Mul হয়, তবে
i3 := i3 + 1
next3mul := uglyNum[i3] * 3
যদি next = next5Mul হয়, তবে
i5 := i5 + 1
next5mul := uglyNum[i5] * 5
끝난
next ফেরত দিন
শেষ
উদাহরণ (C++)
#include <iostream>
using namespace std;
int min(int x, int y, int z) {
if(x < y) {
if(x < z) return x;
else return z;
} else {
if(y < z) return y;
else return z;
}
}
int getUglyNum(int n) {
int uglyNum[n];
int i2 = 0, i3 = 0, i5 = 0;
int next2mul = 2;
int next3mul = 3;
int next5mul = 5;
int next = 1;
uglyNum[0] = 1;
for (int i=1; i> n;
cout << n << "th Ugly number is: " << getUglyNum(n) << endl;
}
আউটপুট
Enter term: 10 10th Ugly number is: 12