Sum of all the elements in an array divisible by a given number K
Last Updated :
05 Apr, 2023
Given an array containing N elements and a number K. The task is to find the sum of all such elements which are divisible by K.
Examples:
Input : arr[] = {15, 16, 10, 9, 6, 7, 17}
K = 3
Output : 30
Explanation: As 15, 9, 6 are divisible by 3. So, sum of elements divisible by K = 15 + 9 + 6 = 30.
Input : arr[] = {5, 3, 6, 8, 4, 1, 2, 9}
K = 2
Output : 20
The idea is to traverse the array and check the elements one by one. If an element is divisible by K then add that element’s value with the sum so far and continue this process while the end of the array reached.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int findSum( int arr[], int n, int k)
{
int sum = 0;
for ( int i = 0; i < n; i++) {
if (arr[i] % k == 0) {
sum += arr[i];
}
}
return sum;
}
int main()
{
int arr[] = { 15, 16, 10, 9, 6, 7, 17 };
int n = sizeof (arr) / sizeof (arr[0]);
int k = 3;
cout << findSum(arr, n, k);
return 0;
}
|
C
#include <stdio.h>
int findSum( int arr[], int n, int k)
{
int sum = 0;
for ( int i = 0; i < n; i++) {
if (arr[i] % k == 0) {
sum += arr[i];
}
}
return sum;
}
int main()
{
int arr[] = { 15, 16, 10, 9, 6, 7, 17 };
int n = sizeof (arr) / sizeof (arr[0]);
int k = 3;
printf ( "%d" ,findSum(arr, n, k));
return 0;
}
|
Java
import java.io.*;
class GFG {
static int findSum( int arr[], int n, int k)
{
int sum = 0 ;
for ( int i = 0 ; i < n; i++) {
if (arr[i] % k == 0 ) {
sum += arr[i];
}
}
return sum;
}
public static void main (String[] args) {
int arr[] = { 15 , 16 , 10 , 9 , 6 , 7 , 17 };
int n = arr.length;
int k = 3 ;
System.out.println( findSum(arr, n, k));
}
}
|
Python3
def findSum(arr, n, k) :
sum = 0
for i in range (n) :
if arr[i] % k = = 0 :
sum + = arr[i]
return sum
if __name__ = = "__main__" :
arr = [ 15 , 16 , 10 , 9 , 6 , 7 , 17 ]
n = len (arr)
k = 3
print (findSum(arr, n, k))
|
C#
using System;
public class GFG{
static int findSum( int []arr, int n, int k)
{
int sum = 0;
for ( int i = 0; i < n; i++) {
if (arr[i] % k == 0) {
sum += arr[i];
}
}
return sum;
}
static public void Main (){
int []arr = { 15, 16, 10, 9, 6, 7, 17 };
int n = arr.Length;
int k = 3;
Console.WriteLine( findSum(arr, n, k));
}
}
|
PHP
<?php
function findSum( $arr , $n , $k )
{
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
{
if ( $arr [ $i ] % $k == 0)
{
$sum += $arr [ $i ];
}
}
return $sum ;
}
$arr = array (15, 16, 10, 9, 6, 7, 17);
$n = sizeof( $arr );
$k = 3;
echo findSum( $arr , $n , $k );
|
Javascript
<script>
function findSum(arr, n, k)
{
let sum = 0;
for (let i = 0; i < n; i++) {
if (arr[i] % k == 0) {
sum += arr[i];
}
}
return sum;
}
let arr = [ 15, 16, 10, 9, 6, 7, 17 ];
let n = arr.length;
let k = 3;
document.write(findSum(arr, n, k));
</script>
|
complexity Analysis:
- Time Complexity: O(N), where N is the number of elements in the array.
- Auxiliary Space: O(1)
Using Recursion :
Start traversing the array using recursion and check if the current element is divisible by K. If yes then update the answer. Print the answer when all the elements get traversed.
Method 1 : (Pass By Reference)
Implementation :
- Make a variable sum and pass that address of that variable
- We passing address of sum variable so that no change occur in it after every another function call.
- We just increment our pointer and make another function call.
- Add the value at pointer into our sum and make another function call until the base condition hits.
C++
#include <iostream>
using namespace std;
void solve( int arr[], int k, int i, int & ans)
{
if (i < 0) {
return ;
}
if (arr[i] % k == 0) {
ans += arr[i];
}
solve(arr, k, i - 1,
ans);
}
int main()
{
int n = 6;
int arr[n] = { 2, 6, 7, 12, 14, 18 };
int k = 2;
int sum = 0;
solve(arr, k, n - 1, sum);
cout << sum << " " ;
return 0;
}
|
Java
import java.util.*;
public class Main {
public static void solve( int arr[], int k, int i, int [] ans) {
if (i < 0 ) {
return ;
}
if (arr[i] % k == 0 ) {
ans[ 0 ] += arr[i];
}
solve(arr, k, i - 1 , ans);
}
public static void main(String[] args) {
int n = 6 ;
int arr[] = { 2 , 6 , 7 , 12 , 14 , 18 };
int k = 2 ;
int [] sum = new int [ 1 ];
solve(arr, k, n - 1 , sum);
System.out.print(sum[ 0 ] + " " );
}
}
|
Python3
def solve(arr, k, i, ans):
if i < 0 :
return
if arr[i] % k = = 0 :
ans[ 0 ] + = arr[i]
solve(arr, k, i - 1 , ans)
if __name__ = = '__main__' :
n = 6
arr = [ 2 , 6 , 7 , 12 , 14 , 18 ]
k = 2
sum_arr = [ 0 ]
solve(arr, k, n - 1 , sum_arr)
print (sum_arr[ 0 ], end = ' ' )
|
C#
using System;
public class Program
{
public static void Solve( int [] arr, int k, int i, ref int ans)
{
if (i < 0)
return ;
if (arr[i] % k == 0)
{
ans += arr[i];
}
Solve(arr, k, i - 1, ref ans);
}
public static void Main()
{
int n = 6;
int [] arr = { 2, 6, 7, 12, 14, 18 };
int k = 2;
int sum = 0;
Solve(arr, k, n - 1, ref sum);
Console.WriteLine(sum);
}
}
|
Javascript
function solve(arr, k, i, ans) {
if (i < 0) {
return ;
}
if (arr[i] % k === 0) {
ans[0] += arr[i];
}
solve(arr, k, i - 1, ans);
}
const n = 6;
const arr = [2, 6, 7, 12, 14, 18];
const k = 2;
const sum_arr = [0];
solve(arr, k, n - 1, sum_arr);
console.log(sum_arr[0]);
|
Method 2 : (Pass By Value)
Implementation :
- Take a sum variable and only pass its value into the function solve.
- Function will return int value and we use that value to find our ans.
- If number is divisible by K then return the number ( arr[i] ) and if not divisible then return 0.
C++
#include <iostream>
using namespace std;
int solve( int arr[], int k, int i)
{
if (i < 0) {
return 0;
}
if (arr[i] % k == 0) {
return arr[i]
+ solve(arr, k,
i - 1);
}
else {
return 0
+ solve(arr, k,
i - 1);
}
}
int main()
{
int n = 6;
int arr[n] = { 2, 6, 7, 12, 14, 18 };
int k = 2;
int sum = solve(arr, k, n - 1);
cout << sum << " " ;
return 0;
}
|
Java
import java.util.*;
public class Main {
static int solve( int [] arr, int k, int i)
{
if (i < 0 ) {
return 0 ;
}
if (arr[i] % k == 0 ) {
return arr[i] + solve(arr, k, i - 1 );
}
else {
return 0 + solve(arr, k, i - 1 );
}
}
public static void main(String[] args)
{
int n = 6 ;
int [] arr = { 2 , 6 , 7 , 12 , 14 , 18 };
int k = 2 ;
int sum = solve(arr, k, n - 1 );
System.out.println(sum);
}
}
|
Python3
def solve(arr, k, i):
if i < 0 :
return 0
if arr[i] % k = = 0 :
return arr[i] + solve(arr, k, i - 1 )
else :
return 0 + solve(arr, k, i - 1 )
n = 6
arr = [ 2 , 6 , 7 , 12 , 14 , 18 ]
k = 2
sum = solve(arr, k, n - 1 )
print ( sum )
|
C#
using System;
public class MainClass {
public static int Solve( int [] arr, int k, int i)
{
if (i < 0) {
return 0;
}
if (arr[i] % k == 0) {
return arr[i] + Solve(arr, k, i - 1);
}
else {
return 0 + Solve(arr, k, i - 1);
}
}
public static void Main()
{
int n = 6;
int [] arr = { 2, 6, 7, 12, 14, 18 };
int k = 2;
int sum = Solve(arr, k, n - 1);
Console.WriteLine(sum);
}
}
|
Javascript
function solve(arr, k, i) {
if (i < 0) {
return 0;
}
if (arr[i] % k == 0) {
return (
arr[i] +
solve(arr, k, i - 1)
);
} else {
return 0 + solve(arr, k, i - 1);
}
}
const arr = [2, 6, 7, 12, 14, 18];
const k = 2;
const sum = solve(arr, k, arr.length - 1);
console.log(sum);
|
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...