java 求两个数的最大公约数

3a. 编写计算“两个整数的最大公约数”程序。
//方法一:定义法
// 根据定义让i累加上去的到结果,缺点是:当数据大时循环的次数过大

package pro1.suanfa.whp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class common_divisor { /** * 计算两个数的公约数 * 方法一 * @param args * @throws IOException * @throws NumberFormatException */ public static void main(String[] args) { // TODO 自动生成的方法存根 try { System.out.println("计算两个数的最大公约!!"); System.out.println("请输入第一个正整数:"); BufferedReader br1 = new BufferedReader(new InputStreamReader( System.in)); int num1 = Integer.parseInt(br1.readLine()); System.out.println("请输入第二个正整数:"); BufferedReader br2 = new BufferedReader(new InputStreamReader( System.in)); int num2 = Integer.parseInt(br2.readLine()); if(num1>0&&num2>0) { int min; if (num1 < num2)// 或者int min=Math.min(num1, num2); { min = num1; } else { min = num2; }int Maxcommin_divisor = 1; for (int i = min; i >= 1; i--) { if (num1 % i == 0 && num2 % i == 0) { Maxcommin_divisor = i; break; } } System.out.print("最大公约数是:" + Maxcommin_divisor); }else { System.out.print("输入的数不是正整数"); } } catch (Exception e) { System.out.print("输入的数不是正整数"); } }}




方法二:欧几里德算法(辗转相除法):java求两个整数最大公约数

package pro1.suanfa.whp; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class common_divisor { /** * 计算两个数的公约数 * 方法二 * @param args * @throws IOException * @throws NumberFormatException */ public static void main(String[] args) { // TODO 自动生成的方法存根 try { System.out.println("计算两个数的最大公约!!"); System.out.println("请输入第一个正整数:"); BufferedReader br1 = new BufferedReader(new InputStreamReader( System.in)); int num1 = Integer.parseInt(br1.readLine()); System.out.println("请输入第二个正整数:"); BufferedReader br2 = new BufferedReader(new InputStreamReader( System.in)); int num2 = Integer.parseInt(br2.readLine()); int Maxcommin_divisor; if(num1>0&&num2>0) { if(num1>num2){ Maxcommin_divisor=common(num1,num2); }else { Maxcommin_divisor=common(num2,num1); }System.out.print("最大公约数是:" +Maxcommin_divisor); }else { System.out.print("输入的数不是正整数"); } } catch (Exception e) { System.out.print("输入的数不是正整数"); } } private static int common(int a,int b){ if(a%b==0) return b; else return common(b,a%b); }}


运行答案如下:

java 求两个数的最大公约数
文章图片



【java 求两个数的最大公约数】

    推荐阅读