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.

Updated on: 2026-03-15T10:58:10+05:30

322 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements