इस समस्या में, हमें एक संख्या n दी गई है। हमारा कार्य C++ में 1 से n तक अभाज्य संख्याओं का योग ज्ञात करने का एक प्रोग्राम बनाना है।
अभाज्य संख्याएं वे संख्याएं हैं जिनके केवल दो गुणनखंड होते हैं। वे संख्या स्वयं और 1 हैं।
आइए एक उदाहरण लेकर समस्या को समझते हैं
इनपुट
n = 15
आउटपुट
41
व्याख्या
1 से 15 तक अभाज्य संख्याएं 2, 3, 5, 7, 11, 13 हैं। योग 41 है।
समाधान दृष्टिकोण
समस्या को हल करने का एक सरल तरीका लूप का उपयोग करके प्रत्येक संख्या की जांच करना है कि यह अभाज्य संख्या है या नहीं और उन सभी को जोड़ना जो अभाज्य हैं।
यह जांचने के लिए कि कोई संख्या i अभाज्य संख्या है या नहीं। हम i से i/2 तक लूप करेंगे। जांचें कि क्या कोई संख्या है जो i को विभाजित कर सकती है। यदि हां, तो संख्या अभाज्य संख्या नहीं है।
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
उदाहरण
#include <iostream> using namespace std; bool isPrime(int n){ for(int i = 2; i < n/2; i++){ if(n%i == 0){ return false; } } return true; } int findPrimeSum(int n){ int sumVal = 0; for(float i = 2; i <= n; i++){ if(isPrime(i)) sumVal += i; } return sumVal; } int main(){ int n = 15; cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n); return 0; }आउटपुट
The sum of prime number between 1 to 15 is 45
एक प्रभावी समाधान एराटोस्थनीज की छलनी का उपयोग करके अभाज्य संख्याओं को ढूंढना और उन्हें जोड़कर आवश्यक योग ढूंढना है।
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
उदाहरण
#include <iostream> using namespace std; int findPrimeSum(int n){ int arr[n+1] = {0}; for (int i = 2; i < n; i++) { for (int j = i * i; j < n; j+=i) { arr[j - 1] = 1; } } int sumVal; for (int i = 2; i < n; i++) { if (arr[i - 1] == 0) sumVal += i; } return sumVal; } int main(){ int n = 15; cout<<"The sum of prime number between 1 to "<<n<<" is "<<findPrimeSum(n); return 0; }आउटपुट
The sum of prime number between 1 to 15 is 41