【数学转编程】求出最大公约数的实现即思路分析====>最大公约数

本文介绍了如何使用递归和循环编程方法计算两个非负整数的最大公约数(GCD)。通过举例解释了递归过程,展示了从a除以b得到余数r,直到r为0时返回b作为最大公约数的过程。同时,也提供了循环编程的思路,通过判断条件和循环迭代,最终找到最大公约数。
摘要由CSDN通过智能技术生成

自然语言描述问题

公约数

公约数,亦称“公因数”。它是指能同时整除几个整数的数 。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数

问题描述

计算两个非负整数a和b的最大公约数:
若b为0,则最大公约数为a。否则,将a除以b得到余数r,a和b的最大公约数即为b和r的最大公约数。

数学描述

编程

递归编程及其思路

使用递归进行编程

  1. 判断b是否是0如果是零了最大公约数就是a(也就是如果a是b的倍数举个例子如[16与0],[20与0],[11与0]那么8、10、11就分别是这几个数的最大公约数)
  2. 如果不是就用a除以b获得r,那么a,b最大公约数就是b,r的最大公约数
  3. 把b当成a,r当成b继续第一个步骤。

代码

public static int gcd(int a, int b){
	if(b==0) return a;
	int r = a%b;
	return gcd(b,r); 
}
举个例子执行这串代码:a=16 , b=10;
第一次执行 16%10 = 6;    b=10 , r = 6 将b赋值给a,将r赋值给b
第二次执行 10 % 6 = 4;    b=6 , r = 4  将b赋值给a,将r赋值给b
第四次执行 6 % 4 = 2  ;  b=4 , r = 2 将b赋值给a,将r赋值给b
第五次执行 4 % 2 = 0  ;  b=2 , r = 0 将b赋值给a,将r赋值给b
第六次执行 a=2,b=0 弹出数值2
所以16与10的最大公约数为 2

循环编程及其思路

使用循环进行编程

  1. 判断b是否为0(如果是a为最大公倍数)
  2. 判断a是否是b的倍数(a能整除b就说明b是最大公倍数如:16与8 ,20与10)
  3. 使用循环执行a除以b得到r
  4. 判断r是否为零当r为0时弹出b
  5. 将b赋值给a,r赋值给b
public static int gcd(int a, int b){
	if(b==0) return a;
	if(a%b==0) return b;
	int r;
	while(true){
		r = a%b;
		if(r==0) return b;
		a = b;
		b = r;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值