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

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


}

你可能感兴趣的:(java,蓝桥杯,java,算法)