蓝桥杯 辗转相除法---求最大公约数

该博客介绍了如何运用辗转相除法(欧几里得算法)来求两个整数的最大公约数。通过举例(319,377)详细展示了计算过程,解释了算法的核心思路:不断用较大数除以较小数,直至余数为0,最后的除数即为最大公约数。此外,还提供了Java代码实现,用于计算输入的两个整数的最大公约数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.例子
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319)

∵ 377÷319=1(余58)
∴(377,319)=(31958);

∵ 319÷58=5(余29)
∴ (319,58)=(5829);

∵ 58÷29=2(余0)
∴ (58,29)= 29;

∴ (319,377)=29

由规律知: 余数的值是呆在下一轮除数的位置,原本除数的位置是下一轮被除数的位置

2.解题思路
辗转相除法 用来求最大公约数 主要抓住两个tip,伙计们
函数声明一波 int gcd (int a,int b);
(1)首先呢 第一个数a要大于第二个数!!!
若a<b,则要进行交换
ppl如下:

if(a<b)//正确的位置关系应该是:大值在第一个位置, 小值在第二个位置
{
int temp;//中间变量
temp=a;//将**小值**赋给中间变量
a=b;//**大值**赋给a所在的位置
b=temp;//将**小值**赋给b所在的位置
}

(2)辗转相除法的过程ppl

while(b!=0)
{
int temp=a%b;
a=b;//将除数的值赋给下一轮被除数的位置
b=temp;//将余数的值赋给下一轮b的位置

3.代码实习

import java.util.Scanner;

public class Main31 {
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 Scanner sc=new Scanner(System.in);
		 int a,b,t=1;
		 a=sc.nextInt();
		 b=sc.nextInt();
		do {
			int temp=a%b;//求余数
			a=b;//将除数的值赋给下一轮被除数的位置
			b=temp;//将余数的值赋给下一轮除数的位置
			
		}while(b!=0);
		
			System.out.println(a);
		
	
	}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值