Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Absolute Difference between the Sum of Non-Prime numbers and Prime numbers of an Array?
Here we will see how we can find the absolute difference between the sum of all prime numbers and all non-prime numbers of an array. To solve this problem, we have to check whether a number is prime or not. One possible way for primality testing is by checking if a number is not divisible by any number between 2 to square root of that number. This process will take O(√n) amount of time for each number.
Syntax
int diffPrimeNonPrimeSum(int arr[], int n);
Algorithm
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
Example
The following example demonstrates finding the absolute difference between sum of prime and non-prime numbers in an array −
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int isPrime(int n) {
if (n <= 1) {
return 0; // not prime
}
if (n == 2) {
return 1; // prime
}
if (n % 2 == 0) {
return 0; // not prime
}
for (int i = 3; i <= sqrt(n); i += 2) {
if (n % i == 0) {
return 0; // not prime
}
}
return 1; // 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);
}
int main() {
int arr[] = {5, 8, 9, 6, 21, 27, 3, 13};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("<br>");
printf("Prime numbers: 5, 3, 13 (sum = 21)<br>");
printf("Non-prime numbers: 8, 9, 6, 21, 27 (sum = 71)<br>");
printf("Absolute difference: |21 - 71| = %d<br>", diffPrimeNonPrimeSum(arr, n));
return 0;
}
Array: 5 8 9 6 21 27 3 13 Prime numbers: 5, 3, 13 (sum = 21) Non-prime numbers: 8, 9, 6, 21, 27 (sum = 71) Absolute difference: |21 - 71| = 50
Key Points
- Numbers less than or equal to 1 are not considered prime.
- 2 is the only even prime number.
- The algorithm has O(n × √m) time complexity, where n is array size and m is the maximum element.
- We use
abs()function to get the absolute difference.
Conclusion
This approach efficiently calculates the absolute difference between prime and non-prime sums by implementing a primality test and iterating through the array once. The solution handles edge cases like 1 and even numbers correctly.
