没有输出结果,哪里不对,怎么改进呢

#include
using namespace std;
int main()
{ int a,b,m,n,r;
a=m;
b=n;
cin>>m>>n;
if (m<n) n=a,m=b;
while(r!=0)
{r=m%n;
m=n;
n=r;
}
cout<<"最大公约数"<<m<<"\n"<<"最大公倍数"<<(a*b)/m<<endl;
return 0;
}

#include <iostream>
using namespace std;
int main()
{
    int a, b, m, n, r;
    cin >> a >> b;
    m = a;
    n = b;
    if (m < n)
        swap(m, n);
    while ((r = m % n) != 0)
    {
        m = n;
        n = r;
    }
    cout << "最大公约数: " << n << "\n"
         << "最大公倍数: " << (a * b) / n << '\n';
    return 0;
}