एक स्मार्ट नंबर एक संख्या है जिसमें कम से कम तीन अलग-अलग प्रमुख कारक होते हैं। आपको एक नंबर N दिया गया है। n-th स्मार्ट नंबर खोजें।
स्मार्ट नंबर सीरीज हैं
30, 42, 60, 66, 70, 78...
एल्गोरिदम
- नंबर को इनिशियलाइज़ करें।
- गिनती को 0 से प्रारंभ करें।
- एक फ़ंक्शन लिखें जो यह जांचता है कि दी गई संख्या अभाज्य है या नहीं।
- एक फ़ंक्शन लिखें जो यह जांचता है कि नंबर स्मार्ट है या नहीं।
- ऐसा लूप लिखें जो 30 से पुनरावृत्त हो क्योंकि पहला स्मार्ट नंबर 30 है।
- जांचें कि वर्तमान नंबर स्मार्ट नंबर है या अभाज्य संख्या फ़ंक्शन का उपयोग नहीं कर रहा है।
- स्मार्ट नंबर मिलने पर गिनती 1 से बढ़ाएं।
- स्मार्ट नंबर लौटाएं जब आप गिनती एन के बराबर हो।
कार्यान्वयन
C++ में उपरोक्त एल्गोरिथम का कार्यान्वयन निम्नलिखित है
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
bool isSmartNumber(int n) {
int count = 0;
for (int i = 2; i < n; i++) {
if (n % i == 0 && isPrime(i)) {
count += 1;
}
if (count == 3) {
return true;
}
}
return false;
}
int getNthSmartNumber(int n) {
int i = 30, count = 0;
while (true) {
if (isSmartNumber(i)) {
count += 1;
}
if (count == n) {
return i;
}
i += 1;
}
}
int main() {
int N = 25;
cout << getNthSmartNumber(N) << endl;
return 0;
} आउटपुट
यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम प्राप्त होंगे।
174