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);
} }