# GCD of two numbers formed by n repeating x and y times

• Difficulty Level : Medium
• Last Updated : 23 Aug, 2021

Given three positive integer n, x, y. The task is to print Greatest Common Divisor of numbers formed by n repeating x times and number formed by n repeating y times.
0 <= n, x, y <= 1000000000.
Examples :

```Input : n = 123, x = 2, y = 3.
Output : 123
Number formed are 123123 and 123123123.
Greatest Common Divisor of 123123 and
123123123 is 123.

Input : n = 4, x = 4, y = 6.
Output : 44```

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.

The idea is based on Euclidean algorithm to compute GCD of two number
Let f(n, x) be a function which gives a number n repeated x times. So, we need to find GCD(f(n, x), f(n, y)).
Let n = 123, x = 3, y = 2.
So, first number A is f(123, 3) = 123123123 and second number B is f(123, 2) = 123123. We know, GCD(A,B) = GCD(A – B, B), using this property we can subtract any multiple of B, say B’ from first A as long as B’ is smaller than A.
So, A = 123123123 and B’ can be 123123000. On subtracting A will became 123 and B remains same.
Therefore, A = A – B’ = f(n, x – y).
So, GCD(f(n, x), f(n, y)) = GCD(f(n, x – y), f(n, y))
We can conclude following,

`GCD(f(n, x), f(n, y)) = f(n, GCD(x, y)). `

Below is the implementation based on this approach:

## CPP

 `// C++ program to print Greatest Common Divisor``// of number formed by N repeating x times and``// y times.``#include``using` `namespace` `std;` `// Return the Greatest common Divisor of two numbers.``int` `gcd(``int` `a, ``int` `b)``{``    ``if` `(a == 0)``        ``return` `b;``    ``return` `gcd(b%a, a);``}` `// Prints Greatest Common Divisor of number formed``// by n repeating x times and y times.``void` `findgcd(``int` `n, ``int` `x, ``int` `y)``{``    ``// Finding GCD of x and y.``    ``int` `g = gcd(x,y);` `    ``// Print n, g times.``    ``for` `(``int` `i = 0; i < g; i++)``        ``cout << n;``}` `// Driven Program``int` `main()``{``    ``int` `n = 123, x = 5, y = 2;``    ``findgcd(n, x, y);``    ``return` `0;``}`

## Java

 `// Java program to print Greatest Common Divisor``// of number formed by N repeating x times and``// y times``class` `GFG {``    ` `    ``// Return the Greatest common Divisor``    ``// of two numbers.``    ``static` `int` `gcd(``int` `a, ``int` `b) {``        ` `        ``if` `(a == ``0``)``            ``return` `b;``            ` `        ``return` `gcd(b % a, a);``    ``}``    ` `    ``// Prints Greatest Common Divisor of``    ``// number formed by n repeating x``    ``// times and y times.``    ``static` `void` `findgcd(``int` `n, ``int` `x, ``int` `y) {``        ` `        ``// Finding GCD of x and y.``        ``int` `g = gcd(x, y);``    ` `        ``// Print n, g times.``        ``for` `(``int` `i = ``0``; i < g; i++)``            ``System.out.print(n);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args) {``        ` `        ``int` `n = ``123``, x = ``5``, y = ``2``;``        ``findgcd(n, x, y);``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python program to print Greatest``# Common Divisor of number formed``# by N repeating x times and y times` `# Return the Greatest common Divisor``# of two numbers.``def` `gcd(a, b):``    ` `    ``if` `(a ``=``=` `0``):``        ``return` `b``    ` `    ``return` `gcd(b ``%` `a, a)` `# Prints Greatest Common Divisor of``# number formed by n repeating x times``# and y times.``def` `findgcd(n, x, y):` `    ``# Finding GCD of x and y.``    ``g ``=` `gcd(x, y)` `    ``# Print n, g times.``    ``for` `i ``in` `range``(g):``        ``print``(n)` `# Driver code``n ``=` `123``x ``=` `5``y ``=` `2` `findgcd(n, x, y)` `# This code is contributed by Anant Agarwal.`

## C#

 `// C# program to print Greatest Common``// Divisor of number formed by N``// repeating x times and y times``using` `System;` `class` `GFG {``    ` `    ``// Return the Greatest common``    ``// Divisor of two numbers.``    ``static` `int` `gcd(``int` `a, ``int` `b)``    ``{``        ` `        ``if` `(a == 0)``            ``return` `b;``            ` `        ``return` `gcd(b % a, a);``    ``}``    ` `    ``// Prints Greatest Common``    ``// Divisor of number formed``    ``// by n repeating x times``    ``// and y times.``    ``static` `void` `findgcd(``int` `n,``                      ``int` `x, ``int` `y)``    ``{``        ` `        ``// Finding GCD of x and y.``        ``int` `g = gcd(x, y);``    ` `        ``// Print n, g times.``        ``for` `(``int` `i = 0; i < g; i++)``            ``Console.Write(n);``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main() {``        ` `        ``int` `n = 123, x = 5, y = 2;``        ` `        ``findgcd(n, x, y);``    ``}``}` `// This code is contributed by``// nitin mittal.`

## PHP

 ``

## Javascript

 ``

Output :

`123`

This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.