# Sum of all numbers in the given range which are divisible by M

Given three numbers **A, B** and **M** such that **A < B**, the task is to find the sum of numbers **divisible by M** in the range **[A, B]**.

**Examples: **

Input:A = 25, B = 100, M = 30Output:180Explanation:

In the given range [25, 100] 30, 60 and 90 are the numbers which are divisible by M = 30

Therefore, sum of these numbers = 180.

Input:A = 6, B = 15, M = 3Output:42Explanation:

In the given range [6, 15] 6, 9, 12 and 15 are the numbers which are divisible by M = 3.

Therefore, sum of these numbers = 42.

* Naive Approach:* Check for each number in the range [A, B] if they are divisible by M or not. And finally, add all the numbers that are divisible by M.

Below is the implementation of the above approach:

## C++

`// C++ program to find the sum of numbers` `// divisible by M in the given range` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the sum of numbers` `// divisible by M in the given range` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `sum = 0;` ` ` `// Running a loop from A to B and check` ` ` `// if a number is divisible by i.` ` ` `for` `(` `int` `i = A; i <= B; i++)` ` ` `// If the number is divisible,` ` ` `// then add it to sum` ` ` `if` `(i % M == 0)` ` ` `sum += i;` ` ` `// Return the sum` ` ` `return` `sum;` `}` `// Driver code` `int` `main()` `{` ` ` `// A and B define the range` ` ` `// M is the dividend` ` ` `int` `A = 6, B = 15, M = 3;` ` ` `// Printing the result` ` ` `cout << sumDivisibles(A, B, M) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java program to find the sum of numbers` `// divisible by M in the given range` `import` `java.util.*;` `class` `GFG{` ` ` `// Function to find the sum of numbers` `// divisible by M in the given range` `static` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `sum = ` `0` `;` ` ` ` ` `// Running a loop from A to B and check` ` ` `// if a number is divisible by i.` ` ` `for` `(` `int` `i = A; i <= B; i++)` ` ` ` ` `// If the number is divisible,` ` ` `// then add it to sum` ` ` `if` `(i % M == ` `0` `)` ` ` `sum += i;` ` ` ` ` `// Return the sum` ` ` `return` `sum;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `// A and B define the range` ` ` `// M is the dividend` ` ` `int` `A = ` `6` `, B = ` `15` `, M = ` `3` `;` ` ` ` ` `// Printing the result` ` ` `System.out.print(sumDivisibles(A, B, M) +` `"\n"` `);` `}` `}` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python 3 program to find the sum of numbers` `# divisible by M in the given range` `# Function to find the sum of numbers` `# divisible by M in the given range` `def` `sumDivisibles(A, B, M):` ` ` `# Variable to store the sum` ` ` `sum` `=` `0` ` ` `# Running a loop from A to B and check` ` ` `# if a number is divisible by i.` ` ` `for` `i ` `in` `range` `(A, B ` `+` `1` `):` ` ` `# If the number is divisible,` ` ` `# then add it to sum` ` ` `if` `(i ` `%` `M ` `=` `=` `0` `):` ` ` `sum` `+` `=` `i` ` ` `# Return the sum` ` ` `return` `sum` `# Driver code` `if` `__name__` `=` `=` `"__main__"` `:` ` ` ` ` `# A and B define the range` ` ` `# M is the dividend` ` ` `A ` `=` `6` ` ` `B ` `=` `15` ` ` `M ` `=` `3` ` ` `# Printing the result` ` ` `print` `(sumDivisibles(A, B, M))` ` ` `# This code is contributed by chitranayal` |

## C#

`// C# program to find the sum of numbers` `// divisible by M in the given range` `using` `System;` `class` `GFG{` ` ` `// Function to find the sum of numbers` `// divisible by M in the given range` `static` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `sum = 0;` ` ` ` ` `// Running a loop from A to B and check` ` ` `// if a number is divisible by i.` ` ` `for` `(` `int` `i = A; i <= B; i++)` ` ` ` ` `// If the number is divisible,` ` ` `// then add it to sum` ` ` `if` `(i % M == 0)` ` ` `sum += i;` ` ` ` ` `// Return the sum` ` ` `return` `sum;` `}` ` ` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` `// A and B define the range` ` ` `// M is the dividend` ` ` `int` `A = 6, B = 15, M = 3;` ` ` ` ` `// Printing the result` ` ` `Console.Write(sumDivisibles(A, B, M) +` `"\n"` `);` `}` `}` ` ` `// This code is contributed by sapnasingh4991` |

## Javascript

`<script>` `// Javascript program to find the sum of numbers` `// divisible by M in the given range` `// Function to find the sum of numbers` `// divisible by M in the given range` `function` `sumDivisibles(A, B, M)` `{` ` ` ` ` `// Variable to store the sum` ` ` `var` `sum = 0;` ` ` `// Running a loop from A to B and check` ` ` `// if a number is divisible by i.` ` ` `for` `(` `var` `i = A; i <= B; i++)` ` ` ` ` `// If the number is divisible,` ` ` `// then add it to sum` ` ` `if` `(i % M == 0)` ` ` `sum += i;` ` ` `// Return the sum` ` ` `return` `sum;` `}` `// Driver code` `// A and B define the range` `// M is the dividend` `var` `A = 6, B = 15, M = 3;` `// Printing the result` `document.write(sumDivisibles(A, B, M));` `// This code is contributed by rrrtnx` `</script>` |

**Output:**

42

**Time Complexity:** O(N).**Auxiliary Space**: O(1)

* Efficient Approach:* The idea is to use the concept of Arithmetic Progression and divisibility.

- Upon visualization, the multiples of M can be seen to form a series

M, 2M, 3M, ...

- If we can find the value of K which is the first term in the range [A, B] which is divisible by M, then directly, the series would be:

K, (K + M), (K + 2M), ------ (K + (N - 1)*M ) where N is the number of elements in the series.

- Therefore, the first term
**‘K’**in the series is nothing but the largest number smaller than or equal to A that is divisible by M. - Similarly, the last term is the smallest number greater than or equal B that is divisible by M.
- However, if any of the above numbers exceed out of the range, then we can directly subtract M from it to bring it into the range.
- And, the number of terms divisible by M can be found out by the formula:

N = B / M - (A - 1)/ M

- Therefore, the sum of the elements can be found out by:

sum = N * ( (first term + last term) / 2)

Below is the implementation of the above approach:

## C++

`// C++ program to find the sum of numbers` `// divisible by M in the given range` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the largest number` `// smaller than or equal to N` `// that is divisible by K` `int` `findSmallNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = N % K;` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N - rem;` `}` `// Function to find the smallest number` `// greater than or equal to N` `// that is divisible by K` `int` `findLargeNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = (N + K) % K;` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N + K - rem;` `}` `// Function to find the sum of numbers` `// divisible by M in the given range` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `sum = 0;` ` ` `int` `first = findSmallNum(A, M);` ` ` `int` `last = findLargeNum(B, M);` ` ` `// To bring the smallest and largest` ` ` `// numbers in the range [A, B]` ` ` `if` `(first < A)` ` ` `first += M;` ` ` `if` `(last > B)` ` ` `first -= M;` ` ` `// To count the number of terms in the AP` ` ` `int` `n = (B / M) - (A - 1) / M;` ` ` `// Sum of n terms of an AP` ` ` `return` `n * (first + last) / 2;` `}` `// Driver code` `int` `main()` `{` ` ` `// A and B define the range,` ` ` `// M is the dividend` ` ` `int` `A = 6, B = 15, M = 3;` ` ` `// Printing the result` ` ` `cout << sumDivisibles(A, B, M);` ` ` `return` `0;` `}` |

## Java

`// Java program to find the sum of numbers` `// divisible by M in the given range` `class` `GFG{` ` ` `// Function to find the largest number` `// smaller than or equal to N` `// that is divisible by K` `static` `int` `findSmallNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = N % K;` ` ` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == ` `0` `)` ` ` `return` `N;` ` ` `else` ` ` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N - rem;` `}` ` ` `// Function to find the smallest number` `// greater than or equal to N` `// that is divisible by K` `static` `int` `findLargeNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = (N + K) % K;` ` ` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == ` `0` `)` ` ` `return` `N;` ` ` `else` ` ` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N + K - rem;` `}` ` ` `// Function to find the sum of numbers` `// divisible by M in the given range` `static` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `first = findSmallNum(A, M);` ` ` `int` `last = findLargeNum(B, M);` ` ` ` ` `// To bring the smallest and largest` ` ` `// numbers in the range [A, B]` ` ` `if` `(first < A)` ` ` `first += M;` ` ` ` ` `if` `(last > B)` ` ` `first -= M;` ` ` ` ` `// To count the number of terms in the AP` ` ` `int` `n = (B / M) - (A - ` `1` `) / M;` ` ` ` ` `// Sum of n terms of an AP` ` ` `return` `n * (first + last) / ` `2` `;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `// A and B define the range,` ` ` `// M is the dividend` ` ` `int` `A = ` `6` `, B = ` `15` `, M = ` `3` `;` ` ` ` ` `// Printing the result` ` ` `System.out.print(sumDivisibles(A, B, M));` ` ` `}` `}` `// This code contributed by Princi Singh` |

## Python3

`# Python3 program to find the sum of numbers` `# divisible by M in the given range` `# Function to find the largest number` `# smaller than or equal to N` `# that is divisible by K` `def` `findSmallNum(N, K):` ` ` ` ` `# Finding the remainder when N is` ` ` `# divided by K` ` ` `rem ` `=` `N ` `%` `K` ` ` `# If the remainder is 0, then the` ` ` `# number itself is divisible by K` ` ` `if` `(rem ` `=` `=` `0` `):` ` ` `return` `N` ` ` `else` `:` ` ` `# Else, then the difference between` ` ` `# N and remainder is the largest number` ` ` `# which is divisible by K` ` ` `return` `N ` `-` `rem` `# Function to find the smallest number` `# greater than or equal to N` `# that is divisible by K` `def` `findLargeNum(N, K):` ` ` ` ` `# Finding the remainder when N is` ` ` `# divided by K` ` ` `rem ` `=` `(N ` `+` `K) ` `%` `K` ` ` `# If the remainder is 0, then the` ` ` `# number itself is divisible by K` ` ` `if` `(rem ` `=` `=` `0` `):` ` ` `return` `N` ` ` `else` `:` ` ` `# Else, then the difference between` ` ` `# N and remainder is the largest number` ` ` `# which is divisible by K` ` ` `return` `N ` `+` `K ` `-` `rem` `# Function to find the sum of numbers` `# divisible by M in the given range` `def` `sumDivisibles(A, B, M):` ` ` ` ` `# Variable to store the sum` ` ` `sum` `=` `0` ` ` `first ` `=` `findSmallNum(A, M)` ` ` `last ` `=` `findLargeNum(B, M)` ` ` `# To bring the smallest and largest` ` ` `# numbers in the range [A, B]` ` ` `if` `(first < A):` ` ` `first ` `+` `=` `M` ` ` `if` `(last > B):` ` ` `first ` `-` `=` `M` ` ` `# To count the number of terms in the AP` ` ` `n ` `=` `(B ` `/` `/` `M) ` `-` `(A ` `-` `1` `) ` `/` `/` `M` ` ` `# Sum of n terms of an AP` ` ` `return` `n ` `*` `(first ` `+` `last) ` `/` `/` `2` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` ` ` `# A and B define the range,` ` ` `# M is the dividend` ` ` `A ` `=` `6` ` ` `B ` `=` `15` ` ` `M ` `=` `3` ` ` `# Printing the result` ` ` `print` `(sumDivisibles(A, B, M))` `# This code is contributed by Surendra_Gangwar` |

## C#

`// C# program to find the sum of numbers` `// divisible by M in the given range` `using` `System;` `using` `System.Collections.Generic;` `class` `GFG{` ` ` `// Function to find the largest number` `// smaller than or equal to N` `// that is divisible by K` `static` `int` `findSmallNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = N % K;` ` ` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N - rem;` `}` ` ` `// Function to find the smallest number` `// greater than or equal to N` `// that is divisible by K` `static` `int` `findLargeNum(` `int` `N, ` `int` `K)` `{` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `int` `rem = (N + K) % K;` ` ` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N + K - rem;` `}` ` ` `// Function to find the sum of numbers` `// divisible by M in the given range` `static` `int` `sumDivisibles(` `int` `A, ` `int` `B, ` `int` `M)` `{` ` ` `// Variable to store the sum` ` ` `int` `first = findSmallNum(A, M);` ` ` `int` `last = findLargeNum(B, M);` ` ` ` ` `// To bring the smallest and largest` ` ` `// numbers in the range [A, B]` ` ` `if` `(first < A)` ` ` `first += M;` ` ` ` ` `if` `(last > B)` ` ` `first -= M;` ` ` ` ` `// To count the number of terms in the AP` ` ` `int` `n = (B / M) - (A - 1) / M;` ` ` ` ` `// Sum of n terms of an AP` ` ` `return` `n * (first + last) / 2;` `}` ` ` `// Driver code` `public` `static` `void` `Main(String[] args)` `{` ` ` `// A and B define the range,` ` ` `// M is the dividend` ` ` `int` `A = 6, B = 15, M = 3;` ` ` ` ` `// Printing the result` ` ` `Console.Write(sumDivisibles(A, B, M));` ` ` `}` `}` ` ` `// This code is contributed by Rajput-Ji` |

## Javascript

`<script>` `// Javascript program to find the sum of numbers` `// divisible by M in the given range` `// Function to find the largest number` `// smaller than or equal to N` `// that is divisible by K` `function` `findSmallNum(N, K)` `{` ` ` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `var` `rem = N % K;` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N - rem;` `}` `// Function to find the smallest number` `// greater than or equal to N` `// that is divisible by K` `function` `findLargeNum(N, K)` `{` ` ` ` ` `// Finding the remainder when N is` ` ` `// divided by K` ` ` `var` `rem = (N + K) % K;` ` ` `// If the remainder is 0, then the` ` ` `// number itself is divisible by K` ` ` `if` `(rem == 0)` ` ` `return` `N;` ` ` `else` ` ` `// Else, then the difference between` ` ` `// N and remainder is the largest number` ` ` `// which is divisible by K` ` ` `return` `N + K - rem;` `}` `// Function to find the sum of numbers` `// divisible by M in the given range` `function` `sumDivisibles(A, B, M)` `{` ` ` ` ` `// Variable to store the sum` ` ` `var` `sum = 0;` ` ` `var` `first = findSmallNum(A, M);` ` ` `var` `last = findLargeNum(B, M);` ` ` `// To bring the smallest and largest` ` ` `// numbers in the range [A, B]` ` ` `if` `(first < A)` ` ` `first += M;` ` ` `if` `(last > B)` ` ` `first -= M;` ` ` `// To count the number of terms in the AP` ` ` `var` `n = (parseInt(B / M) - ` ` ` `parseInt((A - 1) / M));` ` ` `// Sum of n terms of an AP` ` ` `return` `n * (first + last) / 2;` `}` `// Driver code` `// A and B define the range,` `// M is the dividend` `var` `A = 6, B = 15, M = 3;` `// Printing the result` `document.write( sumDivisibles(A, B, M));` `// This code is contributed by rutvik_56` `</script>` |

**Output:**

42

**Time Complexity:** O(1)**Auxiliary Space**: O(1)

## Please

Loginto comment...