题目链接:7-24 约分最简分式
一. 题目
1. 题目
2. 输入输出格式
3. 输入输出样例
4. 限制
二、代码(python)
1. 代码实现
def GetGcd(a:int,b:int):
gcd:int = 0
max_range:int
min_num:int
max_num:int
if a == b:
return a
elif a < b:
min_num = a
max_num = b
else:
min_num = b
max_num = a
if min_num * 2 < max_num:
max_range = min_num
else:
max_range = int(max_num / 2)
for i in range(max_range, 1, -1):
if a%i == 0 and b%i == 0:
gcd = i
break
return gcd
a, b = map(int, input().split('/'))
gcd = GetGcd(a, b)
a = int(a / gcd)
b = int(b / gcd)
print("{0}/{1}".format(a, b))
2. 提交结果
三、代码©
1. 代码实现
#include <stdio.h>
int GetGcd(int a, int b);
int main(void) {
int a, b, gcd;
if (scanf("%d/%d", &a, &b) != 2) {
return -1;
}
gcd = GetGcd(a, b);
a /= gcd;
b /= gcd;
printf("%d/%d\n", a, b);
return 0;
}
int GetGcd(int a, int b) {
int gcd, max, min, range;
gcd = 1;
if (a == b) {
return a;
}
if (a > b) {
max = a;
min = b;
} else {
max = b;
min = a;
}
if (min * 2 <= max) {
range = min;
} else {
range = max / 2;
}
while (range > 1) {
if (a % range == 0 && b % range == 0) {
gcd = range;
break;
}
range --;
}
return gcd;
}