递规之最大公约数

求两数的最大公约数
不用递规思路1:[color=red]将两数从1开始除直至除到其中的一个数,如果都能除尽则记下该值[/color]

public static int zdgy(int n,int m){
int result =0;
for(int i=1;i<=n;i++){
if(n%i==0&&m%i==0){
result=i;
}
}
return result;
}

辗转相相除递规思路2:[align=left][color=red]两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数,如果a>b ,a/b =s1...y1 如果y为0,则a,b的最大公约数为 b ,如果y不为1,b/y1= s2..y2
如果y2等于0,则a,b的最大公约数为y1,以此类推,直至余数为0,则除数为两数的最大公约数[/color][/align]
例:

public static int get(int n,int m){
//判断n是否小于m,如果小于则替换元素
if(n<m){
int t=n;
n=m;
m=t;
}
return gy(n,m);
}
public static int gy(int n,int m){
if(n%m==0){
return m;
}else{
return gy(m,n%m);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值