📜  给定数字的GCD

📅  最后修改于: 2021-04-23 21:17:17             🧑  作者: Mango

给定数字n,找到其数字的GCD。
例子 :

Input  : 345
Output : 1
GCD of 3, 4 and 5 is 1.

Input  : 2448
Output : 2
GCD of 2, 4, 4 and 8 is 2

我们使用下面的循环遍历数字一

digit = n mod 10;
n  = n / 10; 

在遍历数字时,我们会跟踪当前GCD,并通过使用当前GCD查找当前数字的GCD来不断更新GCD。

C++
// CPP program to find GCD of digits of a number
#include
#include
using namespace std;
 
int digitGCD(int n)
{
    int gcd = 0;
    while (n > 0)
    {       
        gcd = __gcd(n%10, gcd);
 
        // If at point GCD becomes 1,
        // return it
        if (gcd == 1)
           return 1;
 
        n = n/10;
    }
    return gcd;
}
 
// driver code
int main()
{
    long n = 2448;
    cout << digitGCD(n);
    return 0;
}


Java
// Java program to find GCD of digits of a number
 
class GFG
{
    // Recursive function to return gcd of a and b
    static int __gcd(int a, int b)
    {
        return b == 0 ? a : __gcd(b, a % b);
         
    }
    static int digitGCD(int n)
    {
        int gcd = 0;
        while (n > 0)
        {    
            gcd = __gcd(n % 10, gcd);
     
            // If at point GCD becomes 1,
            // return it
            if (gcd == 1)
            return 1;
     
            n = n / 10;
        }
        return gcd;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 2448;
        System.out.print(digitGCD(n));
    }
}
 
// This code is contributed by Anant Agarwal.


Python3
# Python program to find
# GCD of digits of a number
 
# Recursive function to return gcd of a and b
def __gcd(a,b):
    return a if(b==0) else __gcd(b, a % b)
     
def digitGCD(n):
 
    gcd = 0
    while (n > 0):
     
        gcd = __gcd(n % 10, gcd)
  
        # If at point GCD becomes 1,
        # return it
        if (gcd == 1):
           return 1
  
        n = n // 10
     
    return gcd
 
#Driver code
n = 2448
print(digitGCD(n))
 
# This code is contributed
# by Anant Agarwal.


C#
// C# program to find GCD of
// digits of a number
using System;
 
class GFG {
     
    // Recursive function to return
    // gcd of a and b
    static int __gcd(int a, int b)
    {
        return b == 0 ? a : __gcd(b, a % b);
         
    }
     
    static int digitGCD(int n)
    {
        int gcd = 0;
        while (n > 0)
        {    
            gcd = __gcd(n % 10, gcd);
     
            // If at point GCD becomes 1,
            // return it
            if (gcd == 1)
            return 1;
     
            n = n / 10;
        }
        return gcd;
    }
     
    // Driver code
    public static void Main ()
    {
        int n = 2448;
        Console.Write(digitGCD(n));
    }
}
 
// This code is contributed by Nitin Mittal.


PHP
 0)
    {    
        $gcd = __gcd($n % 10, $gcd);
 
        // If at point GCD
        // becomes 1, return it
        if ($gcd == 1)
        return 1;
 
        $n = $n / 10;
    }
    return $gcd;
}
 
// Driver code
$n = 2448;
echo digitGCD($n);
 
// This code is contributed by Sam007
?>


Javascript


输出 :

2