用函数求两个整数的最大公约数和最小公倍数

不明白我的代码哪里错了,好像没有进入到函数中,不知道是什么原因?怎么改正啊?

img

img

img

第4行,定义了int t并没有给初值,while(t>0)不满足循环条件,没有执行循环。
参考:

int fun1(int m,int n){
       int s;
       while(n!=0){//判断n是否为0,不为0则不做while循环
           s=m%n;
           m=n;
           n=s;
       }
       return m;//m为最大公约数
   }
   
  int fun2(int m,int n){
      int a;
      a=fun1(m,n);//调用fun1函数,将最大公约数赋值给a
      return m*n/a;//两数相乘再除以最大公约数得最小公倍数
  }

hcf函数,t没有赋值,lcd函数中,直接用m/n得到的不是公倍数,应该用m和n的乘积除以最大公约数。代码修改如下:

int hcf(int x ,int y) {
    int t = x % y; 
    while (t > 0) { 
        x = y; 
        y = t; 
        t = x % y; 
    } 
    return y; 
}

int lcd(int m, int n) {
    int z;
    z = (m * n) / hcf(m, n);
    return z;
}