Java实战三 最大公约数

描述

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

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

数据范围:1≤a,b≤1091≤a,b≤109

进阶:空间复杂度 O(1)O(1),时间复杂度 O(logn)O(logn)

示例1

输入:

3,6

返回值:

3

方法一:暴力枚举法

import java.util.*;


public class Solution {
    public int gcd (int a, int b) {
        int max = a > b ? a:b;
        int min = a < b ? a:b;
        for(int i = min;i > 0;i--)
            if(max % i == 0 && min % i == 0)
                return i;
    return 0;
    }
}
//java中没有swap交换函数。

方法二:最小公约数法

import java.util.*;


public class Solution {
    public int gcd (int a, int b) {
        int max = a > b ? a:b;
        int min = a < b ? a:b;
        if(max % min ==0)
            return min;
    return gcd(max % min, min);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值