C++练习14:求两个数的最大公约数gcd

C++练习14:求两个数的最大公约数gcd

  • 题目
  • 思路
  • 代码

题目

求两个不相等正整数的最大公约数gcd

思路

欧几里得法(辗转相除法):欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。

代码

#include 
using namespace std;

int main (){
     
	
	int a,b,c,re;
	
	cout << "这是一个求两数最大公约数的程序!" << endl;
	cout << "请输入第一个数字:" ;
	cin >> a;
	
	cout << "请输入第二个数字:" ;
	cin >> b;	
	
	c = a;    // 由于ab大小不确定,此处还做了判断处理,以保证大数据除以小数据
	
	if(a > b){
     
		a = b;
		b = c;
	} 
	
	re = b % a;
	
	while(re>0){
     
		b = a;
		a = re;
		re = b % a;
	}
	cout <<"这两个数的最大公约数为:" << a;
} 

你可能感兴趣的:(C++,c++)