Find HCF of two numbers without using recursion or Euclidean algorithm - GeeksforGeeks

07 Apr, 2021
Given two integer x and y, the task is to find the HCF of the numbers without using recursion or Euclidean method.
Examples: 
Input: x = 16, y = 32 Output: 16
Input: x = 12, y = 15 Output: 3  
Approach: HCF of two numbers is the greatest number which can divide both the numbers. If the smaller of the two numbers can divide the larger number then the HCF is the smaller number. Else starting from (smaller / 2) to 1 check whether the current element divides both the numbers . If yes, then it is the required HCF.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <iostream>using namespace std; // Function to return the HCF of x and yint getHCF(int x, int y){     // Minimum of the two numbers    int minimum = min(x, y);     // If both the numbers are divisible    // by the minimum of these two then    // the HCF is equal to the minimum    if (x % minimum == 0 && y % minimum == 0)        return minimum;     // Highest number between 2 and minimum/2    // which can divide both the numbers    // is the required HCF    for (int i = minimum / 2; i >= 2; i--) {         // If both the numbers        // are divisible by i        if (x % i == 0 && y % i == 0)            return i;    }     // 1 divides every number    return 1;} // Driver codeint main(){    int x = 16, y = 32;    cout << getHCF(x, y);     return 0;}
// Java implementation of the approachclass GFG{     // Function to return the HCF of x and ystatic int getHCF(int x, int y){     // Minimum of the two numbers    int minimum = Math.min(x, y);     // If both the numbers are divisible    // by the minimum of these two then    // the HCF is equal to the minimum    if (x % minimum == 0 && y % minimum == 0)        return minimum;     // Highest number between 2 and minimum/2    // which can divide both the numbers    // is the required HCF    for (int i = minimum / 2; i >= 2; i--)    {         // If both the numbers        // are divisible by i        if (x % i == 0 && y % i == 0)            return i;    }     // 1 divides every number    return 1;} // Driver codepublic static void main(String[] args){    int x = 16, y = 32;    System.out.println(getHCF(x, y));}} // This code is contributed by Code_Mech.
# Python3 implementation of the approach # Function to return the HCF of x and ydef getHCF(x, y):     # Minimum of the two numbers    minimum = min(x, y)     # If both the numbers are divisible    # by the minimum of these two then    # the HCF is equal to the minimum    if (x % minimum == 0 and y % minimum == 0):        return minimum     # Highest number between 2 and minimum/2    # which can divide both the numbers    # is the required HCF    for i in range(minimum // 2, 1, -1):                 # If both the numbers are divisible by i        if (x % i == 0 and y % i == 0):            return i     # 1 divides every number    return 1 # Driver codex, y = 16, 32print(getHCF(x, y)) # This code is contributed by mohit kumar
// C# implementation of the approachusing System; class GFG{     // Function to return the HCF of x and ystatic int getHCF(int x, int y){     // Minimum of the two numbers    int minimum = Math.Min(x, y);     // If both the numbers are divisible    // by the minimum of these two then    // the HCF is equal to the minimum    if (x % minimum == 0 && y % minimum == 0)        return minimum;     // Highest number between 2 and minimum/2    // which can divide both the numbers    // is the required HCF    for (int i = minimum / 2; i >= 2; i--)    {         // If both the numbers        // are divisible by i        if (x % i == 0 && y % i == 0)            return i;    }     // 1 divides every number    return 1;} // Driver codestatic void Main(){    int x = 16, y = 32;    Console.WriteLine(getHCF(x, y));}} // This code is contributed by mits
<?php// PHP implementation of the approach // Function to return the HCF of x and yfunction getHCF($x, $y){     // Minimum of the two numbers    $minimum = min($x, $y);     // If both the numbers are divisible    // by the minimum of these two then    // the HCF is equal to the minimum    if ($x % $minimum == 0 &&        $y % $minimum == 0)        return $minimum;     // Highest number between 2 and minimum/2    // which can divide both the numbers    // is the required HCF    for ($i = $minimum / 2; $i >= 2; $i--)    {         // If both the numbers        // are divisible by i        if ($x % $i == 0 &&            $y % $i == 0)            return $i;    }     // 1 divides every number    return 1;} // Driver code$x = 16; $y = 32;echo(getHCF($x, $y)); // This code is contributed// by Code_Mech.?>
<script> // Javascript implementation of the approach // Function to return the HCF of x and yfunction getHCF(x, y){         // Minimum of the two numbers    var minimum = Math.min(x, y);     // If both the numbers are divisible    // by the minimum of these two then    // the HCF is equal to the minimum    if (x % minimum == 0 && y % minimum == 0)        return minimum;     // Highest number between 2 and minimum/2    // which can divide both the numbers    // is the required HCF    for(var i = minimum / 2; i >= 2; i--)    {                 // If both the numbers        // are divisible by i        if (x % i == 0 && y % i == 0)            return i;    }     // 1 divides every number    return 1;} // Driver codevar x = 16, y = 32; document.write(getHCF(x, y)); // This code is contributed by noob2000 </script>
16
 
Mithun Kumar
mohit kumar 29
Code_Mech
noob2000
GCD-LCM
HCF
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Algorithm to solve Rubik's Cube
Program to print prime numbers from 1 to N.
Program to multiply two matrices
Fizz Buzz Implementation
Complexity Analysis of Binary Search
Check if a number is Palindrome
Modular multiplicative inverse
Find Union and Intersection of two unsorted arrays
Count ways to reach the n'th stair
Find first and last digits of a number