求最大公约数

来源:互联网 发布:文华财经交易软件 编辑:程序博客网 时间:2024/05/18 02:16
</pre><span style="white-space:pre"></span><pre name="code" class="java"><span style="font-size:18px;">// 求最大公约数// 分解:1.约数  2.公共  3.最大public int getMaxDivisor(int a, int b) {int maxNum = (a > b) ? a : b;int minNum = (a > b) ? b : a;int maxDivisor = 1;for (int i = 1; i <= minNum; i++) {if (maxNum % i == 0) {if (minNum % i == 0) {maxDivisor = i;}}}return maxDivisor;}// 求最大公约数public int getMaxDivisor(int[] arr) {int min = getMinValue(arr);int maxDivisor = 1;divisorLabel:for (int i = 1; i <= min; i++) {for (int j = 0; j < arr.length; j++) {if (arr[j] % i != 0){break divisorLabel;}}if (i > maxDivisor) {maxDivisor = i;}}return maxDivisor;}// 求最大公约数:欧几里得算法(辗转相除法),递归实现public int getMaxDivisorEuclidRecursion(int a, int b) {if (a == 1 || b == 1) {return 1;}int maxNum = (a > b) ? a : b;int minNum = (a > b) ? b : a;if (maxNum % minNum == 0) {return minNum;} else {return getMaxDivisorEuclidRecursion(minNum, maxNum - minNum);}}// 求最大公约数:欧几里得算法(辗转相除法),循环实现public int getMaxDivisorEuclidLoop(int a, int b) {int maxNum = (a > b) ? a : b;int minNum = (a > b) ? b : a;while (maxNum % minNum != 0) {if (maxNum == 1 || minNum == 1) {return 1;}a = minNum;b = maxNum - minNum;maxNum = (a > b) ? a : b;minNum = (a > b) ? b : a;}return minNum;}// 获取最大值public int getMaxValue(int[] arr) {int max = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}// 获取最小值public int getMinValue(int[] arr) {int min = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i] < min) {min = arr[i];}}return min;}</span>


0 0
原创粉丝点击