最大公约数gcd的通俗理解和Java代码的实现
2023-12-13 05:38:42
什么是最大公约数
最大公约数(Greatest CommonDivisor,简称GCD)是指两个或多个整数共有的最大正因数,即能够同时整除这些数的最大的正整数。以两个整数为例,最大公约数表示这两个数最大的共有因数,也就是能够同时整除这两个数的最大整数。
例如,对于数字48和18,它们的最大公约数是6,因为6是48和18都能整除的最大整数。
最大公约数的计算
最大公约数(GCD)可以通过欧几里德算法(辗转相除法)来求解。算法的步骤如下:
用较大数除以较小数,得到商和余数。
- 48除以18,商为2,余数为12。
将较小数替换为原来的较大数,将余数替换为原来的较小数。
- 现在,将18替换为原来的12,将12替换为原来的18。
重复步骤1和2,直到余数为0。
- 18除以12,商为1,余数为6。
- 将12替换为6,将6替换为12。
- 12除以6,商为2,余数为0。
用数学理解以上描述 48 % 18 =12 18 % 12 = 6 12 % 6 = 0 6即为最大公约数
因此,通过欧几里德算法,我们可以求得48和18的最大公约数为6。
//代码表示最大公约数(GCD)求解
//48 % 18 =12
//18 % 12 = 6
//12 % 6 = 0
public static int gcd(int m, int n) {
while (n != 0) { //出口
int temp = m % n;
m = n;
n = temp;
}
return m; //这里之所以返回m是因为在最后一次计算中除数n的值被赋值给m了
}
练习(找出数组的最大公约数)
给你一个整数数组
nums
,返回数组中最大数和最小数的 最大公约数 。两个数的 最大公约数 是能够被两个数整除的最大正整数。
示例 1:
输入:nums = [2,5,6,9,10] 输出:2 解释: nums 中最小的数是 2 nums 中最大的数是 10 2 和 10 的最大公约数是 2
示例 2:
输入:nums = [7,5,6,8,3] 输出:1 解释: nums 中最小的数是 3 nums 中最大的数是 8 3 和 8 的最大公约数是 1
示例 3:
输入:nums = [3,3] 输出:3 解释: nums 中最小的数是 3 nums 中最大的数是 3 3 和 3 的最大公约数是 3
class Solution {
public int findGCD(int[] nums) {
int min = nums[0];
int max = nums[0];
for(int i = 1;i < nums.length;i++){
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
}
return gcd(max,min);
}
public static int gcd(int m, int n) {
while (n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return m;
}
}
文章来源:https://blog.csdn.net/m0_59167353/article/details/134952218
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!