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 = 20Output: 98Input: N = 14Output: 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 <bits/stdc++.h> ` `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

`<?php ` `// PHP program to find sum of numbers from ` `// 1 to N which are divisible by X or Y ` `// Function to calculate the sum ` `// of numbers divisible by X or Y ` `function` `sum(` `$N` `, ` `$X` `, ` `$Y` `) ` `{ ` ` ` `$S1` `; ` `$S2` `; ` `$S3` `; ` ` ` ` ` `$S1` `= ` `floor` `(((int)` `$N` `/ ` `$X` `)) * (2 * ` `$X` `+ (int)((int)` `$N` `/ ` `$X` `- 1) * ` `$X` `) / 2; ` ` ` `$S2` `= ` `floor` `(((int)` `$N` `/ ` `$Y` `)) * (2 * ` `$Y` `+ (int)((int)` `$N` `/ ` `$Y` `- 1) * ` `$Y` `) / 2; ` ` ` `$S3` `= ` `floor` `(((int)` `$N` `/ (` `$X` `* ` `$Y` `))) * (2 * (` `$X` `* ` `$Y` `) ` ` ` `+ ((int)` `$N` `/ (` `$X` `* ` `$Y` `) - 1) * (int)(` `$X` `* ` `$Y` `))/ 2; ` ` ` ` ` `return` `ceil` `(` `$S1` `+ (` `$S2` `- ` `$S3` `)); ` `} ` ` ` `// Driver code ` ` ` `$N` `= 14; ` ` ` `$X` `= 3; ` ` ` `$Y` `= 5; ` ` ` ` ` `echo` `sum(` `$N` `, ` `$X` `, ` `$Y` `); ` ` ` `#This code is contributed by ajit. ` `?> ` |

**Output:**

45

**Time Complexity :** O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.