Given two numbers A and B, the task is to Divide the two numbers A and B by their common divisors. The numbers A and B is less than 10^8.

**Examples:**

Input:A = 10, B = 15Output:A = 2, B = 3 The common factors are 1, 5Input:A = 100, B = 150Output:A = 2, B = 3

**Naive Approach:** Iterate from i = 1 to minimum of A and B and check whether **i** is a factor of both A and B. If **i** is a factor of **A** and **B** then Divide the two numbers A and B by i.

Below is the implementation of the above approach:

## C++

`// C++ implementation of above approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// print the numbers after dividing ` `// them by their common factors ` `void` `divide(` `int` `a, ` `int` `b) ` `{ ` ` ` `// iterate from 1 to minimum of a and b ` ` ` `for` `(` `int` `i = 2; i <= min(a, b); i++) { ` ` ` ` ` `// if i is the common factor ` ` ` `// of both the numbers ` ` ` `while` `(a % i == 0 && b % i == 0) { ` ` ` `a = a / i; ` ` ` `b = b / i; ` ` ` `} ` ` ` `} ` ` ` ` ` `cout << ` `"A = "` `<< a << ` `", B = "` `<< b << endl; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `A = 10, B = 15; ` ` ` ` ` `// divide A and B by their common factors ` ` ` `divide(A, B); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of above approach ` `import` `java.util.*; ` ` ` `class` `solution ` `{ ` ` ` `// print the numbers after dividing ` `// them by their common factors ` `static` `void` `divide(` `int` `a, ` `int` `b) ` `{ ` ` ` `// iterate from 1 to minimum of a and b ` ` ` `for` `(` `int` `i = ` `2` `; i <= Math.min(a, b); i++) { ` ` ` ` ` `// if i is the common factor ` ` ` `// of both the numbers ` ` ` `while` `(a % i == ` `0` `&& b % i == ` `0` `) { ` ` ` `a = a / i; ` ` ` `b = b / i; ` ` ` `} ` ` ` `} ` ` ` ` ` `System.out.println(` `"A = "` `+a+` `", B = "` `+b); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String args[]) ` `{ ` ` ` `int` `A = ` `10` `, B = ` `15` `; ` ` ` ` ` `// divide A and B by their common factors ` ` ` `divide(A, B); ` ` ` `} ` `} ` ` ` `// This code is contributed by ` `// Surendra_Gangwar ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of above approach ` ` ` `# print the numbers after dividing ` `# them by their common factors ` `def` `divide(a, b) : ` ` ` ` ` `# iterate from 1 to minimum of a and b ` ` ` `for` `i ` `in` `range` `(` `2` `, ` `min` `(a, b) ` `+` `1` `) : ` ` ` ` ` `# if i is the common factor ` ` ` `# of both the numbers ` ` ` `while` `(a ` `%` `i ` `=` `=` `0` `and` `b ` `%` `i ` `=` `=` `0` `) : ` ` ` `a ` `=` `a ` `/` `/` `i ` ` ` `b ` `=` `b ` `/` `/` `i ` ` ` ` ` `print` `(` `"A ="` `, a, ` `", B ="` `, b) ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `A, B ` `=` `10` `, ` `15` ` ` ` ` `# divide A and B by their ` ` ` `# common factors ` ` ` `divide(A, B) ` ` ` `# This code is contributed by Ryuga ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of above approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// print the numbers after dividing ` `// them by their common factors ` `static` `void` `divide(` `int` `a, ` `int` `b) ` `{ ` ` ` `// iterate from 1 to minimum of a and b ` ` ` `for` `(` `int` `i = 2; i <= Math.Min(a, b); i++) ` ` ` `{ ` ` ` ` ` `// if i is the common factor ` ` ` `// of both the numbers ` ` ` `while` `(a % i == 0 && b % i == 0) ` ` ` `{ ` ` ` `a = a / i; ` ` ` `b = b / i; ` ` ` `} ` ` ` `} ` ` ` `Console.WriteLine(` `"A = "` `+a+` `", B = "` `+b); ` `} ` ` ` `// Driver code ` `static` `public` `void` `Main () ` `{ ` ` ` `int` `A = 10, B = 15; ` ` ` ` ` `// divide A and B by their common factors ` ` ` `divide(A, B); ` `} ` `} ` ` ` `// This code is contributed by ajit. ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP implementation of above approach ` `// print the numbers after dividing ` `// them by their common factors ` ` ` `function` `divide(` `$a` `, ` `$b` `) ` `{ ` ` ` `// iterate from 1 to minimum of a and b ` ` ` `for` `(` `$i` `= 2; ` `$i` `<= min(` `$a` `, ` `$b` `); ` `$i` `++) ` ` ` `{ ` ` ` ` ` `// if i is the common factor ` ` ` `// of both the numbers ` ` ` `while` `(` `$a` `% ` `$i` `== 0 && ` ` ` `$b` `% ` `$i` `== 0) ` ` ` `{ ` ` ` `$a` `= ` `$a` `/ ` `$i` `; ` ` ` `$b` `= ` `$b` `/ ` `$i` `; ` ` ` `} ` ` ` `} ` ` ` `echo` `"A = "` `, ` `$a` `, ` `", B = "` `, ` `$b` `, ` `"\n"` `; ` `} ` ` ` `// Driver code ` `$A` `= 10; ` `$B` `= 15; ` ` ` `// divide A and B by their common factors ` `divide(` `$A` `, ` `$B` `); ` ` ` `// This code is contributed by Sach_Code ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

A = 2, B = 3

An **efficient approach ** is to use the same concept used in Common divisors of two numbers. Calculate the greatest common divisor (gcd) of given two numbers, and then divide the numbers by their gcd.

## C++

`// C++ implementation of above approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to calculate gcd of two numbers ` `int` `gcd(` `int` `a, ` `int` `b) ` `{ ` ` ` `if` `(a == 0) ` ` ` `return` `b; ` ` ` `return` `gcd(b % a, a); ` `} ` ` ` `// Function to calculate all common divisors ` `// of two given numbers ` `// a, b --> input integer numbers ` `void` `commDiv(` `int` `a, ` `int` `b) ` `{ ` ` ` `// find gcd of a, b ` ` ` `int` `n = gcd(a, b); ` ` ` ` ` `a = a / n; ` ` ` `b = b / n; ` ` ` ` ` `cout << ` `"A = "` `<< a << ` `", B = "` `<< b << endl; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `int` `a = 10, b = 15; ` ` ` `commDiv(a, b); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// Java implementation of above approach ` `class` `GFG ` `{ ` ` ` `// Function to calculate gcd ` `// of two numbers ` `static` `int` `gcd(` `int` `a, ` `int` `b) ` `{ ` ` ` `if` `(a == ` `0` `) ` ` ` `return` `b; ` ` ` `return` `gcd(b % a, a); ` `} ` ` ` `// Function to calculate all common ` `// divisors of two given numbers ` `// a, b --> input integer numbers ` `static` `void` `commDiv(` `int` `a, ` `int` `b) ` `{ ` ` ` `// find gcd of a, b ` ` ` `int` `n = gcd(a, b); ` ` ` ` ` `a = a / n; ` ` ` `b = b / n; ` ` ` ` ` `System.out.println(` `"A = "` `+ a + ` ` ` `", B = "` `+ b); ` `} ` ` ` `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` ` ` `int` `a = ` `10` `, b = ` `15` `; ` ` ` `commDiv(a, b); ` `} ` `} ` ` ` `// This code is contributed ` `// by Code_Mech ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 implementation of above approach ` ` ` `# Function to calculate gcd of two numbers ` `def` `gcd(a, b): ` ` ` `if` `(a ` `=` `=` `0` `): ` ` ` `return` `b ` ` ` `return` `gcd(b ` `%` `a, a) ` ` ` `# Function to calculate all common ` `# divisors of two given numbers ` `# a, b --> input eger numbers ` `def` `commDiv(a, b): ` ` ` ` ` `# find gcd of a, b ` ` ` `n ` `=` `gcd(a, b) ` ` ` ` ` `a ` `=` `a ` `/` `/` `n ` ` ` `b ` `=` `b ` `/` `/` `n ` ` ` ` ` `print` `(` `"A ="` `, a, ` `", B ="` `, b) ` ` ` `# Driver code ` `a, b ` `=` `10` `, ` `15` `commDiv(a, b) ` ` ` `# This code is contributed ` `# by mohit kumar ` |

*chevron_right*

*filter_none*

## C#

`// C# implementation of above approach ` `using` `System; ` ` ` `class` `GFG ` `{ ` ` ` `// Function to calculate gcd ` `// of two numbers ` `static` `int` `gcd(` `int` `a, ` `int` `b) ` `{ ` ` ` `if` `(a == 0) ` ` ` `return` `b; ` ` ` `return` `gcd(b % a, a); ` `} ` ` ` `// Function to calculate all common ` `// divisors of two given numbers ` `// a, b --> input integer numbers ` `static` `void` `commDiv(` `int` `a, ` `int` `b) ` `{ ` ` ` `// find gcd of a, b ` ` ` `int` `n = gcd(a, b); ` ` ` ` ` `a = a / n; ` ` ` `b = b / n; ` ` ` ` ` `Console.WriteLine(` `"A = "` `+ a + ` ` ` `", B = "` `+ b); ` `} ` ` ` `// Driver code ` `public` `static` `void` `Main() ` `{ ` ` ` `int` `a = 10, b = 15; ` ` ` `commDiv(a, b); ` `} ` `} ` ` ` `// This code is contributed ` `// by Code_Mech ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// PHP implementation of above approach ` ` ` `// Function to calculate gcd of ` `// two numbers ` `function` `gcd(` `$a` `, ` `$b` `) ` `{ ` ` ` `if` `(` `$a` `== 0) ` ` ` `return` `$b` `; ` ` ` `return` `gcd(` `$b` `% ` `$a` `, ` `$a` `); ` `} ` ` ` `// Function to calculate all common ` `// divisors of two given numbers ` `// a, b --> input integer numbers ` `function` `commDiv(` `$a` `, ` `$b` `) ` `{ ` ` ` `// find gcd of a, b ` ` ` `$n` `= gcd(` `$a` `, ` `$b` `); ` ` ` ` ` `$a` `= (int)(` `$a` `/ ` `$n` `); ` ` ` `$b` `= (int)(` `$b` `/ ` `$n` `); ` ` ` ` ` `echo` `"A = "` `. ` `$a` `. ` ` ` `", B = "` `. ` `$b` `. ` `"\n"` `; ` `} ` ` ` `// Driver code ` `$a` `= 10; ` `$b` `= 15; ` `commDiv(` `$a` `, ` `$b` `); ` ` ` `// This code is contributed by mits ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

A = 2, B = 3

**Time comlplexity : **O(n)

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.