# Count pairs (i,j) such that (i+j) is divisible by A and B both

Given n, m, A and B. The task is to count the number of pairs of integers (x, y) such that 1 x n and 1 y m and (x+y) mod A and (x+y) mod B both equals to 0.

**Examples:**

Input: n = 60, m = 90, A = 5, B = 10 Output: 540 Input: n = 225, m = 452, A = 10, B = 15 Output: 3389

**Approach:** If (x+y) is divisible by both A and B then basically LCM of A and B is the smallest divisor of (x+y). So we calculate all numbers that is less than or equal to m and divisible by LCM of them and when iterating with the loop then we check if the present number is divisible by LCM of A and B.

Below is the implementation of the above approach:

## C++

`// C++ implementation of above approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the LCM ` `int` `find_LCM(` `int` `x, ` `int` `y) ` `{ ` ` ` `return` `(x * y) / __gcd(x, y); ` `} ` ` ` `// Function to count the pairs ` `int` `CountPairs(` `int` `n, ` `int` `m, ` `int` `A, ` `int` `B) ` `{ ` ` ` `int` `cnt = 0; ` ` ` `int` `lcm = find_LCM(A, B); ` ` ` ` ` `for` `(` `int` `i = 1; i <= n; i++) ` ` ` `cnt += (m + (i % lcm)) / lcm; ` ` ` ` ` `return` `cnt; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `n = 60, m = 90, A = 5, B = 10; ` ` ` ` ` `cout << CountPairs(n, m, A, B); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`//Java implementation of above approach ` `import` `java.util.*; ` `public` `class` `ACE { ` ` ` ` ` `static` `int` `gcd(` `int` `a,` `int` `b) ` ` ` `{ ` ` ` `return` `b==` `0` `? a :gcd(b,a%b); ` ` ` `} ` ` ` ` ` `//Function to find the LCM ` ` ` `static` `int` `find_LCM(` `int` `x, ` `int` `y) ` ` ` `{ ` ` ` `return` `(x * y) / gcd(x, y); ` ` ` `} ` ` ` ` ` `//Function to count the pairs ` ` ` `static` `int` `CountPairs(` `int` `n, ` `int` `m, ` `int` `A, ` `int` `B) ` ` ` `{ ` ` ` `int` `cnt = ` `0` `; ` ` ` `int` `lcm = find_LCM(A, B); ` ` ` ` ` `for` `(` `int` `i = ` `1` `; i <= n; i++) ` ` ` `cnt += (m + (i % lcm)) / lcm; ` ` ` ` ` `return` `cnt; ` ` ` `} ` ` ` ` ` `//Driver code ` ` ` `public` `static` `void` `main(String[] args) { ` ` ` ` ` `int` `n = ` `60` `, m = ` `90` `, A = ` `5` `, B = ` `10` `; ` ` ` ` ` `System.out.println(CountPairs(n, m, A, B)); ` ` ` ` ` `} ` ` ` `} ` |

*chevron_right*

*filter_none*

## Python 3

`# Python3 implementation of ` `# above approach ` ` ` `# from math lib import gcd method ` `from` `math ` `import` `gcd ` ` ` `# Function to find the LCM ` `def` `find_LCM(x, y) : ` ` ` ` ` `return` `(x ` `*` `y) ` `/` `/` `gcd(x, y) ` ` ` `# Function to count the pairs ` `def` `CountPairs(n, m, A, B) : ` ` ` ` ` `cnt ` `=` `0` ` ` `lcm ` `=` `find_LCM(A, B) ` ` ` ` ` `for` `i ` `in` `range` `(` `1` `, n ` `+` `1` `) : ` ` ` `cnt ` `+` `=` `(m ` `+` `(i ` `%` `lcm)) ` `/` `/` `lcm ` ` ` ` ` `return` `cnt ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `n, m, A, B ` `=` `60` `, ` `90` `, ` `5` `, ` `10` ` ` ` ` `print` `(CountPairs(n, m, A, B)) ` ` ` `# This code is contributed ` `# by ANKITRAI1 ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of above approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `static` `int` `gcd(` `int` `a,` `int` `b) ` ` ` `{ ` ` ` `return` `b == 0 ? a : gcd(b, a % b); ` ` ` `} ` ` ` ` ` `// Function to find the LCM ` ` ` `static` `int` `find_LCM(` `int` `x, ` `int` `y) ` ` ` `{ ` ` ` `return` `(x * y) / gcd(x, y); ` ` ` `} ` ` ` ` ` `//Function to count the pairs ` ` ` `static` `int` `CountPairs(` `int` `n, ` `int` `m, ` ` ` `int` `A, ` `int` `B) ` ` ` `{ ` ` ` `int` `cnt = 0; ` ` ` `int` `lcm = find_LCM(A, B); ` ` ` ` ` `for` `(` `int` `i = 1; i <= n; i++) ` ` ` `cnt += (m + (i % lcm)) / lcm; ` ` ` ` ` `return` `cnt; ` ` ` `} ` ` ` ` ` `// Driver code ` ` ` `public` `static` `void` `Main() ` ` ` `{ ` ` ` `int` `n = 60, m = 90, A = 5, B = 10; ` ` ` ` ` `Console.WriteLine(CountPairs(n, m, A, B)); ` ` ` `} ` `} ` ` ` `// This Code is contributed by mits ` |

*chevron_right*

*filter_none*

## PHP

**Output:**

540

**Time Complexity:** O(n)

## Recommended Posts:

- Count the number of pairs (i, j) such that either arr[i] is divisible by arr[j] or arr[j] is divisible by arr[i]
- Count of pairs from 1 to a and 1 to b whose sum is divisible by N
- Count pairs in array whose sum is divisible by K
- Count number of pairs in array having sum divisible by K | SET 2
- Count pairs of numbers from 1 to N with Product divisible by their Sum
- Print k numbers where all pairs are divisible by m
- Number of pairs from the first N natural numbers whose sum is divisible by K
- Count rotations divisible by 4
- Count rotations divisible by 8
- Count pairs with Odd XOR
- Count pairs with given sum | Set 2
- Count sub-arrays whose product is divisible by k
- Count numbers in range 1 to N which are divisible by X but not by Y
- Count the numbers divisible by 'M' in a given range
- Count Pairs from two arrays with even sum

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.