#include <stdio.h>

int main() {
    
    long m,n;
    scanf("%ld %ld",&m,&n);
    long j,k,temp,i;
    if(m<n)
    {
       i=m;
       m = n;
       n = i;  
    }
    long  s = m*n;
        j = m%n;
        if(j == 0)
        {
            j = n;
            k = s/j;
            printf("%ld",j+k);
        } 
       else
       {
            while(j != 0)
        {
            temp = n%j;
            n = j;
            j = temp;
        }
        j=n;
        k = s/j;
        printf("%ld",j+k);   

       } 
             
    return 0;
}

不记得最大公约数与最小公倍数的求法。刚开始没有先用s = m*n;直接用的m*n来表示,因为在辗转相除的过程中,m和n的值已经在悄无声息的发生变化,所以m*n的值也发生变化,会导致出错。另外用int类型的,数值太大时会出错。代码不够简洁,日后可以研究更为简洁的代码,学习别人的思路。