समस्या
पता लगाएँ कि दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त किया जा सकता है या नहीं।
एक धनात्मक पूर्णांक N को देखते हुए, हमें यह जाँचने की आवश्यकता है कि क्या संख्या N को दो अभाज्य संख्याओं के योग के रूप में दर्शाया जा सकता है।
समाधान
नीचे दिए गए एक उदाहरण पर विचार करें -
20 को दो अभाज्य संख्याओं 3 और 17, 13 और 7 के योग के रूप में व्यक्त किया जा सकता है।
20=3+7
20=13+7
एल्गोरिदम
दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त करने के लिए नीचे दिए गए एल्गोरिथम का संदर्भ लें।
चरण 1 - रन टाइम पर चेक किए जाने वाले नंबर को इनपुट करें।
चरण 2 - i =2 से (num/2) तक दोहराएं।
चरण 3 - चेक करें कि मैं एक अभाज्य संख्या है।
चरण 4 − अगर i अभाज्य है, तो जांचें कि क्या (n - i) एक अभाज्य संख्या है।
चरण 5 - यदि दोनों (i) और (n - i) अभाज्य संख्याएँ हैं, तो दी गई संख्या को अभाज्य संख्या i और (n - i) के योग के रूप में दर्शाया जा सकता है।
उदाहरण
दी गई संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त करने के लिए C प्रोग्राम निम्नलिखित है -
#include <stdio.h> int Sum(int n); int main(){ int num, i; printf("Enter number: "); scanf("%d", &num); int flag = 0; for(i = 2; i <= num/2; ++i){ if (sum(i) == 1){ if (sum(num-i) == 1){ printf("\nThe given %d can be expressed as the sum of %d and %d\n\n", num, i, num - i); flag = 1; } } } if (flag == 0) printf("The given %d cannot be expressed as the sum of two prime numbers\n", num); return 0; } //check if a number is prime or not int sum(int n){ int i, isPrime = 1; for(i = 2; i <= n/2; ++i){ if(n % i == 0){ isPrime = 0; break; } } return isPrime; }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्न आउटपुट उत्पन्न करता है -
Run 1: Enter number: 34 The given 34 can be expressed as the sum of 3 and 31 The given 34 can be expressed as the sum of 5 and 29 The given 34 can be expressed as the sum of 11 and 23 The given 34 can be expressed as the sum of 17 and 17 Run 2: Enter number: 11 The given 11 cannot be expressed as the sum of two prime numbers