java求两个数的最大公约数(改进)

      之前用C语言写过求最大公约数的博客,我发现可以用更简单、明了的代码来实现,这次使用java来完成


import java.util.Scanner;//调用Scanner类,从键盘上获取数据
  public class code {
  public static void main(String[] args){
       Scanner scan=new Scanner(System.in);//Scanner类的使用
       int a=scan.nextInt();//从键盘上输入a
       int b=scan.nextInt();
       System.out.println(fun(a,b));
   }
   public static int fun(int a,int b)//求最大公约数的方法
   {
       int tmp=0;
       while(a%b!=0)
       {
           tmp=a%b;
           a=b;
           b=tmp;
       }
       return b;
   }
}

        在上面求最大公约数的fun方法中,先定义一个变量tmp,当a%b!=0的时候进入循环(如果a小于b,a%b的值是a,进入循环后相当于交换a,b的值,所以代码中不需要判断a,b谁大谁小),进入循环后把a%b的值赋给tmp,b赋给a,tmp赋给b,一直循环直到a%b==0时返回b.

举个例子吧???
如果输入a=4;b=2;那直接返回b,没有问题
如果是a=2;b=4;这时候进入while循环,a%b的值是a,即tmp等于a,后面把b赋给a,tmp赋给b(相当于交换大小,让a是大值)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值