c语言的自定义函数各位懂的解答下

输入两个正整数给x和y,求得这两个数值的最大公约数和最小公倍数,(要求最大公约数和求最小公倍数的功能必须分别用自定义函数来完成)

#include<stdio.h>
int gcd(int x, int y) {
    while(x^=y^=x^=y%=x); return y;
} 
int f(int x, int y) {
    return x * y / gcd(x, y);
}
int main(){
    int x,y;
    scanf("%d%d",&x,&y);
    printf("最小公约数:%d\n",gcd(x,y));
    printf("最小公倍数:%d\n",f(x,y));
    return 0;
}

供参考:

#include <stdio.h>
int gys(int a, int b)
{
    int  i;
    if (a <= 0 || b <= 0)  return 0;
    for (i = a < b ? a : b; i > 0; i--)
    {
        if (a % i == 0 && b % i == 0)
            return i;
    }
}
int gbs(int a, int b)
{
    int i;
    if (a <= 0 || b <= 0)  return 0;
    for (i = a > b ? a : b;; i++)
    {
        if (i % a == 0 && i % b == 0)
            return i;
    }
}
int main()
{
    int a, b;
    printf("please input the both number:");
    scanf("%d%d", &a, &b);
    printf("最大公约数:%d\n", gys(a, b));
    printf("最小公倍数:%d\n", gbs(a, b));
    return 0;
}

不会问,不会答。不想学,不想帮。