एक स्मार्ट नंबर एक संख्या है जिसमें कम से कम तीन अलग-अलग प्रमुख कारक होते हैं। आपको एक नंबर 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