समस्या
यह पता लगाएं कि दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त किया जा सकता है या नहीं।
एक धनात्मक पूर्णांक N दिया गया है, हमें यह जांचना होगा कि संख्या N को दो अभाज्य संख्याओं के योग के रूप में दर्शाया जा सकता है या नहीं।
समाधान
नीचे दिए गए उदाहरण पर विचार करें:
20 को दो अभाज्य संख्याओं 3 और 17, 13 और 7 के योग के रूप में व्यक्त किया जा सकता है।
20 = 3 + 17
20 = 13 + 7
एल्गोरिथ्म
दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त करने का एल्गोरिथ्म:
- रनटाइम पर जांच की जाने वाली संख्या इनपुट करें।
- i = 2 से (num/2) तक दोहराएं।
- जांचें कि i अभाज्य संख्या है या नहीं।
- यदि i अभाज्य है, तो जांचें कि (n - i) अभाज्य संख्या है या नहीं।
- यदि दोनों (i) और (n - i) अभाज्य हैं, तो दी गई संख्या को अभाज्य संख्याओं i और (n - i) के योग के रूप में दर्शाया जा सकता है।
उदाहरण
दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त करने का C प्रोग्राम:
#include <stdio.h>
int isPrime(int n);
int main() {
int num, i;
printf("संख्या दर्ज करें: ");
scanf("%d", &num);
int flag = 0;
for(i = 2; i <= num/2; ++i) {
if (isPrime(i) == 1) {
if (isPrime(num - i) == 1) {
printf("\nदी गई %d को %d और %d के योग के रूप में व्यक्त किया जा सकता है\n\n", num, i, num - i);
flag = 1;
}
}
}
if (flag == 0)
printf("दी गई %d को दो अभाज्य संख्याओं के योग के रूप में व्यक्त नहीं किया जा सकता\n", num);
return 0;
}
// जांचें कि कोई संख्या अभाज्य है या नहीं
int isPrime(int n) {
int i, isPrime = 1;
for(i = 2; i <= n/2; ++i) {
if(n % i == 0) {
isPrime = 0;
break;
}
}
return isPrime;
}
आउटपुट
जब उपरोक्त प्रोग्राम निष्पादित होता है, तो यह निम्नलिखित आउटपुट उत्पन्न करता है:
Run 1: संख्या दर्ज करें: 34 दी गई 34 को 3 और 31 के योग के रूप में व्यक्त किया जा सकता है दी गई 34 को 5 और 29 के योग के रूप में व्यक्त किया जा सकता है दी गई 34 को 11 और 23 के योग के रूप में व्यक्त किया जा सकता है दी गई 34 को 17 और 17 के योग के रूप में व्यक्त किया जा सकता है Run 2: संख्या दर्ज करें: 11 दी गई 11 को दो अभाज्य संख्याओं के योग के रूप में व्यक्त नहीं किया जा सकता