यहां हम देखेंगे कि हम एक सरणी के सभी अभाज्य संख्याओं और सभी गैर-अभाज्य संख्याओं के योग के बीच पूर्ण अंतर कैसे प्राप्त कर सकते हैं। इस समस्या को हल करने के लिए हमें यह जांचना होगा कि कोई संख्या अभाज्य है या नहीं। प्रारंभिक परीक्षण का एक संभावित तरीका यह है कि किसी संख्या की जाँच उस संख्या के 2 से वर्गमूल के बीच किसी भी संख्या से विभाज्य नहीं है। तो इस प्रक्रिया में (√𝑛) समय लगेगा। फिर योग प्राप्त करें और पूर्ण अंतर खोजने का प्रयास करें।
एल्गोरिदम
diffPrimeNonPrimeSum(arr)
begin sum_p := sum of all prime numbers in arr sum_np := sum of all non-prime numbers in arr return |sum_p – sum_np| end
उदाहरण
#include <iostream> #include <cmath> using namespace std; bool isPrime(int n){ for(int i = 2; i<=sqrt(n); i++){ if(n % i == 0){ return false; //not prime } } return true; //prime } int diffPrimeNonPrimeSum(int arr[], int n) { int sum_p = 0, sum_np = 0; for(int i = 0; i<n; i++){ if(isPrime(arr[i])){ sum_p += arr[i]; } else { sum_np += arr[i]; } } return abs(sum_p - sum_np); } main() { int arr[] = { 5, 8, 9, 6, 21, 27, 3, 13}; int n = sizeof(arr) / sizeof(arr[0]); cout << "Difference: " << diffPrimeNonPrimeSum(arr, n); }
आउटपुट
Difference: 50