C++ 最大公约数(递归与非递归)

最大公约数

两个整数的最大公约数是这两个数可以同时整除的最大整数。

实现代码

#include<iostream>
using namespace std;

int  gcd(int , int);//最大公约数函数原型(非递归)
int  gcd2(int , int);//函数原型(递归) 

int main(){
	int num1, num2;
	cout << "输入两个数字: ";
	cin >> num1 >> num2;
	
	cout << "最大公约数(非递归): "; 
	cout << gcd(num1, num2) << endl;
	
	cout << "最大公约数(递归): ";
	cout << gcd2(num1, num2) << endl;
} 

//函数实现 
int  gcd(int a, int b){
	int result;//保存最大公约数 
	/*根据两数最小确定循环次数*/ 
	int min;
	if(a > b){
		min = b;
	}
	else{
		min = a;
	}
	
	for(int i = 1; i <= min; i++){
		if(a % i == 0 && b % i == 0){
			result = i;
		}
	}
	return result;
}
/*该算法序满足条件:a > b*/
int gcd2(int a, int b){
	int result;
	/*不满足条件时,交换数字顺序*/
	int temp;
	if(a < b){
		temp = a;
		a = b;
		b = temp;
	} 
	
	if(b == 0){
		return a;
	}
	else{
		result = gcd2(b, a % b);
	}
	
	return result;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值