Related Articles
Sum of first N natural numbers which are divisible by X or Y
• Last Updated : 31 Mar, 2021

Given a number N. Given two numbers X and Y, the task is to find the sum of all those numbers from 1 to N that are divisible by X or by Y.
Examples

```Input : N = 20
Output : 98

Input : N = 14
Output : 45```

Approach: To solve the problem, follow the below steps:
->Find the sum of numbers that are divisible by X upto N. Denote it by S1.
->Find the sum of numbers that are divisible by Y upto N. Denote it by S2.
->Find the sum of numbers that are divisible by both X and Y (X*Y) upto N. Denote it by S3.
->The final answer will be S1 + S2 – S3.
In order to find the sum, we can use the general formula of A.P. which is:

`Sn = (n/2) * {2*a + (n-1)*d}`

For S1: The total numbers that will be divisible by X upto N will be N/X and the sum will be:

```Hence,
S1 = ((N/X)/2) * (2 * X + (N/X - 1) * X)```

For S2: The total numbers that will be divisible by Y upto N will be N/Y and the sum will be:

```Hence,
S2 = ((N/Y)/2) * (2 * Y + (N/Y - 1) * Y)```

For S3: The total numbers that will be divisible by both X and Y upto N will be N/(X*Y) and the sum will be:

```Hence,
S2 = ((N/(X*Y))/2) * (2 * Y + (N/(X*Y) - 1) * (X*Y))```

Therefore, the result will be:

`S = S1 + S2 - S3`

Below is the implementation of the above approach:

## C++

 `// C++ program to find sum of numbers from``// 1 to N which are divisible by X or Y``#include ``using` `namespace` `std;` `// Function to calculate the sum``// of numbers divisible by X or Y``int` `sum(``int` `N, ``int` `X, ``int` `Y)``{``    ``int` `S1, S2, S3;` `    ``S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;``    ``S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;``    ``S3 = ((N / (X * Y))) * (2 * (X * Y)``                      ``+ (N / (X * Y) - 1) * (X * Y))/ 2;` `    ``return` `S1 + S2 - S3;``}` `// Driver code``int` `main()``{``    ``int` `N = 14;``    ``int` `X = 3, Y = 5;` `    ``cout << sum(N, X, Y);` `    ``return` `0;``}`

## Java

 `// Java program to find sum of numbers from``// 1 to N which are divisible by X or Y` `public` `class` `GFG{``    ` `    ``// Function to calculate the sum``    ``// of numbers divisible by X or Y``    ``static` `int` `sum(``int` `N, ``int` `X, ``int` `Y)``    ``{``        ``int` `S1, S2, S3;``    ` `        ``S1 = ((N / X)) * (``2` `* X + (N / X - ``1``) * X) / ``2``;``        ``S2 = ((N / Y)) * (``2` `* Y + (N / Y - ``1``) * Y) / ``2``;``        ``S3 = ((N / (X * Y))) * (``2` `* (X * Y)``                          ``+ (N / (X * Y) - ``1``) * (X * Y))/ ``2``;``    ` `        ``return` `S1 + S2 - S3;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String []args)``    ``{``        ``int` `N = ``14``;``        ``int` `X = ``3``, Y = ``5``;``    ` `        ``System.out.println(sum(N, X, Y));``    ` `    ``}``    ``// This code is contributed by Ryuga``}`

## Python3

 `# Python 3 program to find sum of numbers from``# 1 to N which are divisible by X or Y``from` `math ``import` `ceil, floor` `# Function to calculate the sum``# of numbers divisible by X or Y``def` `sum``(N, X, Y):``    ``S1 ``=` `floor(floor(N ``/` `X) ``*` `floor(``2` `*` `X ``+``               ``floor(N ``/` `X ``-` `1``) ``*` `X) ``/` `2``)``    ``S2 ``=` `floor(floor(N ``/` `Y)) ``*` `floor(``2` `*` `Y ``+``               ``floor(N ``/` `Y ``-` `1``) ``*` `Y) ``/` `2``    ``S3 ``=` `floor(floor(N ``/` `(X ``*` `Y))) ``*` `floor (``2` `*` `(X ``*` `Y) ``+``               ``floor(N ``/` `(X ``*` `Y) ``-` `1``) ``*` `(X ``*` `Y))``/` `2` `    ``return` `S1 ``+` `S2 ``-` `S3` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``N ``=` `14``    ``X ``=` `3``    ``Y ``=` `5` `    ``print``(``int``(``sum``(N, X, Y)))` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# program to find sum of numbers from``// 1 to N which are divisible by X or Y`` ` `using` `System;``public` `class` `GFG{``     ` `    ``// Function to calculate the sum``    ``// of numbers divisible by X or Y``    ``static` `int` `sum(``int` `N, ``int` `X, ``int` `Y)``    ``{``        ``int` `S1, S2, S3;``     ` `        ``S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;``        ``S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;``        ``S3 = ((N / (X * Y))) * (2 * (X * Y)``                          ``+ (N / (X * Y) - 1) * (X * Y))/ 2;``     ` `        ``return` `S1 + S2 - S3;``    ``}``     ` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `N = 14;``        ``int` `X = 3, Y = 5;``     ` `        ``Console.Write(sum(N, X, Y));``     ` `    ``}``    ` `}`

## PHP

 ``

## Javascript

 ``
Output:
`45`

Time Complexity : O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up