इस समस्या में, हमें एक पूर्णांक n दिया गया है और हमें n से छोटे या बराबर सभी मल्टीप्लिकेटिव प्राइम प्रिंट करने हैं।
मल्टीप्लिकेटिव प्राइम
मल्टीप्लिकेटिव प्राइम वे अभाज्य संख्याएं हैं जिनके अंकों का गुणनफल भी अभाज्य संख्या होती है। जैसे 2, 3, 5, 7, 13, 17।
23 अभाज्य है लेकिन मल्टीप्लिकेटिव प्राइम नहीं है क्योंकि 2*3 = 6।
उदाहरण
Input: n = 9 Output: 2 3 5 7
इस समस्या को हल करने के लिए, हम n से छोटी सभी अभाज्य संख्याएं ढूंढेंगे। और जांचेंगे कि क्या संख्या मल्टीप्लिकेटिव प्राइम है। और n से छोटे सभी मल्टीप्लिकेटिव प्राइम प्रिंट करेंगे।
उदाहरण
प्रोग्राम समस्या का समाधान दर्शाता है:
#include <bits/stdc++.h>
using namespace std;
int digitMultiply(int n) {
int prod = 1;
while (n) {
prod = prod * (n % 10);
n = n / 10;
}
return prod;
}
void generateMprime(int n) {
bool prime[n + 1];
memset(prime, true, sizeof(prime));
prime[0] = prime[1] = false;
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * 2; i <= n; i += p)
prime[i] = false;
}
}
for (int i = 2; i <= n; i++) {
if (prime[i] && prime[digitMultiply(i)])
cout << i << "\t";
}
}
int main() {
int n = 10;
cout << "All multiplicative Prime Numbers <= " << n << " are :\n";
generateMprime(n);
}
आउटपुट
All multiplicative Prime Numbers <= 10 are - 2 3 5 7