परिचय
इस ट्यूटोरियल में हम दिए गए गुणनफल के साथ दो अलग (distinct) अभाज्य संख्याएं ढूंढने के लिए एक प्रोग्राम लिखेंगे। आइए कुछ उदाहरण देखते हैं।
इनपुट - 21
आउटपुट - 3 7
यहां, हमें दिए गए गुणनफल से कम सभी अभाज्य संख्याओं की आवश्यकता है। एक बार हमारे पास वे अभाज्य संख्याएं हों, तो हम आसानी से जोड़ी ढूंढ सकते हैं। समस्या हल करने के लिए नीचे दिए गए चरणों का पालन करें।
समस्या समाधान के चरण
- एक गुणनफल और एक बूलियन सरणी इनिशियलाइज़ करें जो रेंज में संख्याएं अभाज्य हैं या नहीं स्टोर करे।
- दिए गए गुणनफल से कम सभी अभाज्य संख्याएं ढूंढें और उन्हें एक सरणी में स्टोर करें (Sieve of Eratosthenes का उपयोग करके)।
- दिए गए गुणनफल तक पुनरावृत्ति करें।
- यदि वर्तमान संख्या अभाज्य है और n / वर्तमान_संख्या भी अभाज्य है, तो जांचें कि वे अलग हैं या नहीं।
- यदि वे अलग हैं, तो उन्हें प्रिंट करें।
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
void primes(int n, bool primeStatus[]) {
primeStatus[0] = primeStatus[1] = false;
for (int i = 2; i <= n; i++) {
primeStatus[i] = true;
}
for (int i = 2; i * i <= n; i++) {
if (primeStatus[i] == true) {
for (int j = i * 2; j <= n; j += i)
primeStatus[j] = false;
}
}
}
int main() {
int n = 21;
bool primeStatus[n + 1], pairsFound = false;
primes(n, primeStatus);
for (int i = 2; i < n; i++) {
int pair = n / i;
if (primeStatus[i] && primeStatus[pair] && pair != i && pair * i == n) {
cout << i << " " << pair << endl;
pairsFound = true;
break;
}
}
if (!pairsFound){
cout << "No pairs";
}
return 0;
}
आउटपुट
3 7
निष्कर्ष
Sieve of Eratosthenes का उपयोग करके अभाज्य संख्याएं कुशलता से ढूंढी जाती हैं। फिर हम केवल √n तक जांच करते हैं क्योंकि गुणनफल जोड़े सममित होते हैं। 21 = 3 × 7, दोनों अभाज्य और अलग। यदि आपके कोई प्रश्न हैं, तो कमेंट सेक्शन में पूछें।