萨西摩尔·槿花 发表于 2022-9-23 21:00:52

关于c的gsd函数

如何用gsd 函数耗时最少的求最大公约数和最小公倍数??
耗时需在1000ms内

tommyyu 发表于 2022-9-23 21:16:51

int gcd(int x, int y) // 最大公因数
{
        if(y == 0) return x;
        return gcd(y, x%y);
}
int gbd(int x, int y) // 最小公倍数
{
        return x*y/gcd(x, y);
}

jackz007 发表于 2022-9-23 21:30:10

本帖最后由 jackz007 于 2022-9-23 21:35 编辑

      看看这个代码是否可以过关
#include <stdio.h>

int gcd(int a , int b)
{
      for(int c ; b ; c = a % b , a = b , b = c) ;
      return a                                 ;
}

int main(void)
{
      int a , b , c , d                        ;
      scanf("%d%d" , & a , & b)                  ;
      c = gcd(a , b)                           ;
      d = a * b / c                              ;
      printf("%d %d\n" , c , d)                  ;
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
24 36
12 72

D:\\C>

萨西摩尔·槿花 发表于 2022-9-23 22:04:44

tommyyu 发表于 2022-9-23 21:16


感谢

萨西摩尔·槿花 发表于 2022-9-23 22:05:20

jackz007 发表于 2022-9-23 21:30
看看这个代码是否可以过关

      编译、运行实况:

感谢感谢
for(int c ; b ; c = a % b , a = b , b = c) ;
小白求教这句什么意思
页: [1]
查看完整版本: 关于c的gsd函数