最大公约数
两个整数的最大公约数是这两个数可以同时整除的最大整数。
实现代码
#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;
}