एक संख्या 'n' दी गई है और कार्य यह निर्धारित करना है कि दी गई धनात्मक पूर्णांक प्रोथ नंबर है या नहीं और परिणाम को आउटपुट के रूप में प्रदर्शित करना है।
प्रोथ नंबर क्या है?
एक प्रोथ नंबर निम्न द्वारा दिया जाता है:
$$N=k\cdot\:2^{n}+1$$
जहां, n एक धनात्मक पूर्णांक है और k एक विषम धनात्मक पूर्णांक है।
पहले कुछ प्रोथ नंबर नीचे दिए गए हैं -
3, 5, 9, 13, 17, 25, 33, 41, 49, 57, 65, 81, 97.......
इनपुट
संख्या: 17
आउटपुट
यह एक प्रोथ नंबर है
इनपुट
संख्या: 18
आउटपुट
यह प्रोथ नंबर नहीं है
दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
- शर्त की जांच के लिए संख्या इनपुट करें।
- दिए गए सूत्र को लागू करके जांचें कि क्या यह प्रोथ नंबर है या नहीं।
- यदि शर्त सत्य है तो प्रिंट करें "यह एक प्रोथ नंबर है"।
- यदि शर्त सत्य नहीं है तो प्रिंट करें "यह प्रोथ नंबर नहीं है"।
एल्गोरिदम
चरण 1 → 2 की घात की गणना के लिए फ़ंक्शन घोषित करें
bool isPower(int num) {
return (num && !(num & (num - 1)));
}
चरण 2 → जांचने के लिए फ़ंक्शन घोषित करें कि कोई संख्या प्रोथ नंबर है या नहीं
bool isProth(int num) {
int k = 1;
while (k < (num / k)) {
if (num % k == 0) {
if (isPower(num / k))
return true;
}
k = k + 2;
}
return false;
}
चरण 3 → main() में
int num = 17;
if (isProth(num - 1))
cout << "यह एक प्रोथ नंबर है";
else
cout << "यह प्रोथ नंबर नहीं है";
उदाहरण
#include <bits/stdc++.h>
using namespace std;
bool isPower(int num) {
return (num && !(num & (num - 1)));
}
bool isProth(int num) {
int k = 1;
while (k < (num / k)) {
if (num % k == 0) {
if (isPower(num / k))
return true;
}
k = k + 2;
}
return false;
}
int main() {
int num = 17;
if (isProth(num - 1))
cout << "यह एक प्रोथ नंबर है";
else
cout << "यह प्रोथ नंबर नहीं है";
return 0;
}
आउटपुट
यदि उपरोक्त कोड चलाया जाता है तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
यह एक प्रोथ नंबर है