7-24 约分最简分式

题目链接: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;
}

2. 提交结果

在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值