java求取最大公约数

java求取最大公约数

概念

在写代码之前我们要了解一些基本概念

  • 如果数a能被数b整除,a就叫做b的倍数,b就叫做a的约数。
  • 几个整数,公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数。
a%b=0  (b>0),a的最大公约数为b,当b=0时,最大公约数为a

算法思路

当b不等于0时,a除以b取余数,a等于b与余数相除,直到余数等于0,结束

while(b!=0)  
		{
			int temp=a%b;   //取余
			a =b;  
			b=temp;  
		}

方法一

public static int gys(int a,int b) {//返回最大公约数
		//以8,4为例     8,4
		while(b!=0)  //b!=0 分母不为0
		{
			int temp=a%b;    //temp=0
			a =b;   //a=4
			b=temp;  //b=2
		}
		//0除以任何数都是0,所以一个数跟0比较,最大公约数是自身。
		if(a<0) 
			return -a;  //最大公约数是否是负数不影响,可删
		return a;   //4
	}

方法二,利用递归调用求取最大公约数

public static int gys2(int a,int b) {  //递归调用,a,b最大公约数
		//以-8,-4为例
		if(b==0)   //b=0
			return a;
		if(a<0)
			return gys2(-a,b);
		if(b<0)
			return gys2(a,-b);
		
		return gys2(b,a%b);  //a=b=4,b=a%b=0
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值