求最大公约数

利用BigInteger方法中自带的gcd方法可以实现求两个数的最大公约数;
但是有一点我测试过,集合中传入0,0的时候返回的是0,其实照数学来说是不对的,因为0和0的最大公约数是所有的大于0的都可以,但是我们不考虑这个问题,尽量传入的是非0数;

public class GcdUtil {

    /**
     * 获取集合中元素的最大公约数
     */
    public static int gcdList(List<Integer> list) {
    	//利用stream流遍历list中的元素
    	//reduce方法是消费list的元素,利用方法引用
    	//最后处理完后get方法获取处理完成后的结果
        return list.stream().reduce(GcdUtil::gcd).get();
    }

    /**
     * 利用BigInteger的gcd方法可以求两个数的最大公约数
     */
    public static int gcd(int num1, int num2) {
        BigInteger i1 = new BigInteger(String.valueOf(num1));
        BigInteger i2 = new BigInteger(String.valueOf(num2));
        return i1.gcd(i2).intValue();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值