अग्ली नंबर वे संख्याएं हैं जिनके अभाज्य गुणनखंड 2, 3 या 5 होते हैं। 1 से 15 तक, 11 अग्ली नंबर हैं: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15। संख्याएं 7, 11, 13 अग्ली नहीं हैं क्योंकि वे अभाज्य हैं। संख्या 14 अग्ली नहीं है क्योंकि इसके अभाज्य गुणनखंड में 7 आएगा।
इस प्रोग्राम में, हम nth अग्ली नंबर ढूंढने का प्रयास करेंगे।
इनपुट और आउटपुट
इनपुट: टर्म नंबर लें। मान लें यह 10 है आउटपुट: 10वां अग्ली नंबर 12 है
एल्गोरिदम
getUglyNumbers(n)
इनपुट: टर्म्स की संख्या
आउटपुट: nth अग्ली नंबर ढूंढें
शुरुआत
uglyNum नामक ऐरे को आकार n का परिभाषित करें
i2 := 0, i3 := 0, i5 := 0
next2mul := 2, next3mul := 3, next5Mul := 5
next := 1
uglyNum[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; i++) {
next = min(next2mul, next3mul, next5mul);
uglyNum[i] = next;
if (next == next2mul) {
i2++;
next2mul = uglyNum[i2] * 2;
}
if (next == next3mul) {
i3++;
next3mul = uglyNum[i3] * 3;
}
if (next == next5mul) {
i5++;
next5mul = uglyNum[i5] * 5;
}
}
return next;
}
int main() {
int n;
cout << "Enter term: "; cin >> n;
cout << n << "th Ugly number is: " << getUglyNum(n) << endl;
}
आउटपुट
Enter term: 10 10th Ugly number is: 12