*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:首先找出n1和n2的最小值d,然后一次检验d、d-1、d-2、...2、1,是否是n1和n2的公约数。第一个满足条件的公约数就是n1和n2的最大公约数。编写程序,提示用户输入两个正整数,然后显示最大公约数
题目题目概述破题程序清单5-9:从2向上找公约数代码题目
题目概述
*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:首先找出n1和n2的最小值d,然后一次检验d、d-1、d-2、…2、1,是否是n1和n2的公约数。第一个满足条件的公约数就是n1和n2的最大公约数。编写程序,提示用户输入两个正整数,然后显示最大公约数
破题
简单翻译题目:先找到要求的两个整数最小值,从最小值开始自减一直到找到第一个公约数结束获取用户输入 --> 比较得到最小值 --> 从最小值开始向下找公约数程序清单5-9:从2向上找公约数
import java.util.Scanner;public class qingdan {public static void main(String[] args) {// Create a ScannerScanner input = new Scanner(System.in);System.out.println("Enter first integer");int n1 = input.nextInt();System.out.println("Enter second integer:");int n2 = input.nextInt();int gcd = 1; // Initial gcd is 1int k = 2;while ((k <= n1) && (k >= n2)){if(n1 % k == 0 && n2 % k == 0)gcd = k; // Updata gcdk++;}System.out.println("The greatest common divisor for " + n1 + " and " + n2 +" is " + gcd);}}
代码
import java.util.Scanner;public class Test5_14 {public static void main(String[] args) {// 获取用户输入Scanner input = new Scanner(System.in);System.out.println("Enter first integer");int n1 = input.nextInt();System.out.println("Enter second integer:");int n2 = input.nextInt();// 找到n1 n2最小值if(n1 > n1){int temp = n1;n1 = n2;n2 = temp;}int min = n1;int gcd = 1; // Initial gcd is 1int k = min;while (k > 0){if(n1 % k == 0 && n2 % k == 0)gcd = k; // Updata gcd--k;}System.out.println("The greatest common divisor for " + n1 + " and " + n2 +" is " + gcd);}}
Java黑皮书课后题第5章:*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:...提示用户输入两个正整数 然后显示最大公约数