1.例子
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 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);
}
}