最大公约数(GCD)
欧几里得算法,把求a,b的最大公约数转换为求b,a%b的最大公约数问题,不断重复该过程,直到缩小成求某个非零数与零的最大公约数,则该非零数即为所求。
例子:PTA基础编程题目集 7-24 约分最简分式
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == 0) return a;
else {
return gcd(b, a % b);
}
}
int main()
{
int numerator, denominator;
scanf("%d/%d", &numerator, &denominator);
int gg;
int max, min;
if (numerator > denominator) {
max = numerator;
min = denominator;
}
else {
min = numerator;
max = denominator;
}
gg = gcd(max, min);
cout << numerator / gg << "/" << denominator / gg;
}