列表

详情


NC151. 最大公约数

描述

如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。

输入 a 和 b , 请返回 a 和 b 的最大公约数。

数据范围:
进阶:空间复杂度 ,时间复杂度

示例1

输入:

3,6

输出:

3

示例2

输入:

8,12

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-07-18

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 求出a、b的最大公约数。
     * @param a int 
     * @param b int 
     * @return int
     */
    int gcd(int a, int b) {
        // write code here
        if (a % b == 0)
            return b;
        
        return gcd(b, a % b);
    }
};

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-07-18

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 求出a、b的最大公约数。
 * @param a int 
 * @param b int 
 * @return int
 */
int gcd(int a, int b ) {
    // write code here
    int n=a%b;
    while(n!=0)
    {
        a=b;
        b=n;
        n=a%b;
}
    return b;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-06-06

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 求出a、b的最大公约数。
     * @param a int 
     * @param b int 
     * @return int
     */
    int gcd(int a, int b) {
   int r=b;
	while (r != 0)
	{
		r = a % b;
		a = b;
		b = r;
	}
	return a;
        
        // write code here
    }
};

C 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-05-24

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 求出a、b的最大公约数。
 * @param a int 
 * @param b int 
 * @return int
 */
int gcd(int a, int b ) {
    // write code here
    if(b == 0){
        return a;
    } else{
        return gcd(b, a%b);
    }
}

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2021-05-16

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 求出a、b的最大公约数。
     * @param a int 
     * @param b int 
     * @return int
     */
    int gcd(int a, int b) {
        while(b!=0)
        {
            int t=a%b;
            a=b;
            b=t;
        }
        return a;
    }
};

上一题