 Open in App
Not now

# Program to find GCD of floating point numbers

• Difficulty Level : Medium
• Last Updated : 23 Jun, 2022

The greatest common divisor (GCD) of two or more numbers, which are not all zero, is the largest positive number that divides each of the numbers.
Example:

```Input  : 0.3, 0.9
Output : 0.3

Input  : 0.48, 0.108
Output : 0.012```

The simplest approach to solve this problem is :
a=1.20
b=22.5
Expressing each of the numbers without decimals as the product of primes we get:
120 2250 Now, H.C.F. of 120 and 2250 = 2*3*5=30
Therefore,the H.C.F. of 1.20 and 22.5=0.30
(taking 2 decimal places)
We can do this using the Euclidean algorithm. This algorithm indicates that if the smaller number is subtracted from a bigger number, GCD of two numbers doesn’t change.

## C++

 `// CPP code for finding the GCD of two floating``// numbers.``#include ``using` `namespace` `std;` `// Recursive function to return gcd of a and b``double` `gcd(``double` `a, ``double` `b)``{``    ``if` `(a < b)``        ``return` `gcd(b, a);` `    ``// base case``    ``if` `(``fabs``(b) < 0.001)``        ``return` `a;` `    ``else``        ``return` `(gcd(b, a - ``floor``(a / b) * b));``}` `// Driver Function.``int` `main()``{``    ``double` `a = 1.20, b = 22.5;``    ``cout << gcd(a, b);``    ``return` `0;``}`

## Java

 `// JAVA code for finding the GCD of``// two floating numbers.``import` `java.io.*;` `class` `GFG {``    ` `    ``// Recursive function to return gcd``    ``// of a and b``    ``static` `double` `gcd(``double` `a, ``double` `b)``    ``{``        ``if` `(a < b)``            ``return` `gcd(b, a);``     ` `        ``// base case``        ``if` `(Math.abs(b) < ``0.001``)``            ``return` `a;``     ` `        ``else``            ``return` `(gcd(b, a -``                   ``Math.floor(a / b) * b));``    ``}``     ` `    ``// Driver Function.``    ``public` `static` `void` `main(String args[])``    ``{``        ``double` `a = ``1.20``, b = ``22.5``;``        ``System.out.printf(``"%.1f"` `,gcd(a, b));``    ``}``}` `/*This code is contributed by Nikita Tiwari.*/`

## Python

 `# Python code for finding the GCD of``# two floating numbers.` `import` `math` `# Recursive function to return gcd``# of a and b``def` `gcd(a,b) :``    ``if` `(a < b) :``        ``return` `gcd(b, a)``    ` `    ``# base case``    ``if` `(``abs``(b) < ``0.001``) :``        ``return` `a``    ``else` `:``        ``return` `(gcd(b, a ``-` `math.floor(a ``/` `b) ``*` `b))``    ` `     ` `# Driver Function.``a ``=` `1.20``b ``=` `22.5``print``(``'{0:.1f}'``.``format``(gcd(a, b)))` `# This code is contributed by Nikita Tiwari.`

## C#

 `// C# code for finding the GCD of``// two floating numbers.``using` `System;` `class` `GFG {``    ` `    ``// Recursive function to return gcd``    ``// of a and b``    ``static` `float`  `gcd(``double` `a, ``double` `b)``    ``{``        ``if` `(a < b)``            ``return` `gcd(b, a);``    ` `        ``// base case``        ``if` `(Math.Abs(b) < 0.001)``            ``return` `(``float``)a;``    ` `        ``else``            ``return` `(``float``)(gcd(b, a -``                ``Math.Floor(a / b) * b));``    ``}``    ` `    ``// Driver Function.``    ``public` `static` `void` `Main()``    ``{``        ``double` `a = 1.20, b = 22.5;` `        ``Console.WriteLine(gcd(a, b));``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output:

`0.3`

Time Complexity: O(log n)
Auxiliary Space: O(log n)

This article is contributed by Aarti_Rathi and Abhishek Sharma. 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.