# Find the sum of non-prime elements in the given array

Given an array arr[] and the task is to print the sum of the non-prime elements from the array.

Examples:

Input: arr[] = {1, 3, 7, 4, 9, 8}
Output: 22
Non-prime elements are {1, 4, 9, 8} and 1 + 4 + 9 + 8 = 22

Input: arr[] = {11, 4, 10, 7}
Output: 14

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Initialize sum = 0 and start traversing the array element by element, if current element is not a prime then update sum = sum + arr[i]. Print the sum in the end. Primality can be optimally tested using Sieve of Eratosthenes.

Below is the implementation of the above approach:

## C++

 `// CPP program to find sum of ` `// non-primes in given arary ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the sum of ` `// non-prime elements from the array ` `int` `nonPrimeSum(``int` `arr[], ``int` `n) ` `{ ` `    ``// Find maximum value in the array ` `    ``int` `max_val = *max_element(arr, arr + n); ` ` `  `    ``// USE SIEVE TO FIND ALL PRIME NUMBERS LESS ` `    ``// THAN OR EQUAL TO max_val ` `    ``// Create a boolean array "prime[0..n]". A ` `    ``// value in prime[i] will finally be false ` `    ``// if i is Not a prime, else true. ` `    ``vector<``bool``> prime(max_val + 1, ``true``); ` ` `  `    ``// Remaining part of SIEVE ` `    ``prime[0] = ``false``; ` `    ``prime[1] = ``false``; ` `    ``for` `(``int` `p = 2; p * p <= max_val; p++) { ` ` `  `        ``// If prime[p] is not changed, then ` `        ``// it is a prime ` `        ``if` `(prime[p] == ``true``) { ` ` `  `            ``// Update all multiples of p ` `            ``for` `(``int` `i = p * 2; i <= max_val; i += p) ` `                ``prime[i] = ``false``; ` `        ``} ` `    ``} ` ` `  `    ``// Sum all non-prime elements in arr[] ` `    ``int` `sum = 0; ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``if` `(!prime[arr[i]]) ` `            ``sum += arr[i]; ` ` `  `    ``return` `sum; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` ` `  `    ``int` `arr[] = { 1, 3, 7, 4, 9, 8 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` ` `  `    ``cout << nonPrimeSum(arr, n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to find sum of ` `// non-primes in given arary ` `import` `java.util.*; ` ` `  `class` `GFG ` `{ ` ` `  `//returns the maximum element ` `static` `int` `max_element(``int` `arr[]) ` `{ ` `    ``int` `max_e = Integer.MIN_VALUE; ` `    ``for``(``int` `i = ``0``; i < arr.length; i++) ` `    ``{ ` `    ``max_e = Math.max(max_e, arr[i]);  ` `    ``} ` `    ``return` `max_e; ` `} ` ` `  `// Function to return the sum of ` `// non-prime elements from the array ` `static` `int` `nonPrimeSum(``int` `arr[], ``int` `n) ` `{ ` `    ``// Find maximum value in the array ` `    ``int` `max_val = max_element(arr); ` ` `  `    ``// USE SIEVE TO FIND ALL PRIME NUMBERS LESS ` `    ``// THAN OR EQUAL TO max_val ` `    ``// Create a boolean array "prime[0..n]". A ` `    ``// value in prime[i] will finally be false ` `    ``// if i is Not a prime, else true. ` `    ``boolean` `prime[] = ``new` `boolean``[max_val + ``1``]; ` `     `  `    ``for``(``int` `i = ``0``; i < prime.length; i++) ` `    ``prime[i] = ``true``; ` ` `  `    ``// Remaining part of SIEVE ` `    ``prime[``0``] = ``false``; ` `    ``prime[``1``] = ``false``; ` `    ``for` `(``int` `p = ``2``; p * p <= max_val; p++)  ` `    ``{ ` ` `  `        ``// If prime[p] is not changed, then ` `        ``// it is a prime ` `        ``if` `(prime[p] == ``true``)  ` `        ``{ ` ` `  `            ``// Update all multiples of p ` `            ``for` `(``int` `i = p * ``2``; i <= max_val; i += p) ` `                ``prime[i] = ``false``; ` `        ``} ` `    ``} ` ` `  `    ``// Sum all non-prime elements in arr[] ` `    ``int` `sum = ``0``; ` `    ``for` `(``int` `i = ``0``; i < n; i++) ` `        ``if` `(!prime[arr[i]]) ` `            ``sum += arr[i]; ` ` `  `    ``return` `sum; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String args[]) ` `{ ` ` `  `    ``int` `arr[] = { ``1``, ``3``, ``7``, ``4``, ``9``, ``8` `}; ` `    ``int` `n = arr.length; ` `    ``System.out.println( nonPrimeSum(arr, n)); ` `} ` `} ` ` `  `// This code is contributed by Arnab Kundu `

## Python3

 `# Python3 program to find sum of non-primes  ` `# in given arary  ` ` `  `# from math lib. import sqrt ` `from` `math ``import` `sqrt ` ` `  `# Function to return the sum of  ` `# non-prime elements from the array  ` `def` `nonPrimeSum(arr, n) : ` `     `  `    ``# Find maximum value in the array  ` `    ``max_val ``=` `max``(arr) ` ` `  `    ``# USE SIEVE TO FIND ALL PRIME NUMBERS   ` `    ``# LESS THAN OR EQUAL TO max_val  ` `    ``# Create a boolean array "prime[0..n]".  ` `    ``# A value in prime[i] will finally be  ` `    ``# false if i is Not a prime, else true.  ` `    ``prime ``=` `[``True``] ``*` `(max_val ``+` `1``)  ` ` `  `    ``# Remaining part of SIEVE  ` `    ``prime[``0``] ``=` `False` `    ``prime[``1``] ``=` `False` `     `  `    ``for` `p ``in` `range``(``2``, ``int``(sqrt(max_val)) ``+` `1``) : ` ` `  `        ``# If prime[p] is not changed,  ` `        ``# then it is a prime  ` `        ``if` `(prime[p] ``=``=` `True``) : ` ` `  `            ``# Update all multiples of p  ` `            ``for` `i ``in` `range``(p ``*` `2``, max_val ``+` `1``, p) : ` `                ``prime[i] ``=` `False` `         `  `    ``# Sum all non-prime elements in arr[]  ` `    ``sum` `=` `0` `    ``for` `i ``in` `range``(``0``, n) :  ` `        ``if` `(``not` `prime[arr[i]]) : ` `            ``sum` `+``=` `arr[i] ` ` `  `    ``return` `sum` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `: ` ` `  `    ``arr``=` `[ ``1``, ``3``, ``7``, ``4``, ``9``, ``8` `]  ` `    ``n ``=` `len``(arr)  ` ` `  `    ``print``(nonPrimeSum(arr, n)) ` ` `  `# This code is contributed by Ryuga `

## C#

// C# program to find sum of non-primes
// in given arary
using System;

class GFG
{

// returns the maximum element
static int max_element(int[] arr)
{
int max_e = int.MinValue;
for(int i = 0; i < arr.Length; i++) { max_e = Math.Max(max_e, arr[i]); } return max_e; } // Function to return the sum of // non-prime elements from the array static int nonPrimeSum(int[] arr, int n) { // Find maximum value in the array int max_val = max_element(arr); // USE SIEVE TO FIND ALL PRIME NUMBERS // LESS THAN OR EQUAL TO max_val // Create a boolean array "prime[0..n]". // A value in prime[i] will finally be // false if i is Not a prime, else true. bool[] prime = new bool[max_val + 1]; for(int i = 0; i < prime.Length; i++) prime[i] = true; // Remaining part of SIEVE prime[0] = false; prime[1] = false; for (int p = 2; p * p <= max_val; p++) { // If prime[p] is not changed, // then it is a prime if (prime[p] == true) { // Update all multiples of p for (int i = p * 2; i <= max_val; i += p) prime[i] = false; } } // Sum all non-prime elements in arr[] int sum = 0; for (int i = 0; i < n; i++) if (!prime[arr[i]]) sum += arr[i]; return sum; } // Driver code public static void Main() { int[] arr = { 1, 3, 7, 4, 9, 8 }; int n = arr.Length; Console.WriteLine(nonPrimeSum(arr, n)); } } // This code is contributed // by Mukul Singh. [tabbyending]

Output:

```22
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.