Help me in solving GCDLM problem

My issue

my approach is to find the max of x and y and then replace it with gcd of x and y and then again find the max of x and y and then replace it with lcm of x and y;
this process repeates for k times.

My code

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b);
int lcm(int x, int y);
int main() {
    
    int t;
    cin>>t;
    while(t--)
    {
        int x,y,k;
        cin>>x>>y>>k;
        
        for(int i=1; i<=k; i++)
        {
            // alice replace
            x=(x>y)?gcd(x,y):x;
            y=(y>x)?gcd(x,y):y;
            
            //bob replace
            x=(x>y)?lcm(x,y):x;
            y=(y>x)?lcm(x,y):y;
            
        }
        
        cout<<x+y<<endl;
        
    }
	return 0;
}

int gcd(int a,int b)
{
    
    int mini = min(a,b);
    int i=0;
    for(i=mini; i>1; i--)
    {
        if(a%i==0 && b%i==0)
        {
            return i;
        }
    }
    
}

int lcm(int x,int y)
{
    
    int maxi=x*y;
    int mini= max(x,y);
    int i=0;
    for(i=mini; i<=maxi; i++)
    {
        if(i%x==0 && i%y==0)
        {
            return i;
        }
    }
    
}



Problem Link: GCDLM Problem - CodeChef

@durgesh69
if u run loop k times it will give u tle.
observe some pattern .
if answer will remain constant after k=2.