C++中for循环求最大公约数和最小公倍数,求改错

#include "stdafx.h"
#include<iostream>;
using namespace std;
void main()
{
int m,n,q,z;
cout<<"请输入整数m和n,(m大于n):"<<endl;
cin>>m>>n;
for(;m>=n;)
{
q=m%n;
if(q!=0)
{m=n;n=q;
}
else cout<<"其最大公约数为:"<<n<<endl;
}
z=m*n/q;
system("pause");
}
中途出现了死循环,不知道应该加个什么条件好……我是才开始学C++,麻烦大神们用一些最基础的命令指点我一下,谢谢了!~<!--<"请输入整数m和n,(m大于n):"<

#include<iostream>;
using namespace std;
void main()
{
    int m,n,gy,gb,max,min;
    cout<<"请输入整数m和n:"<<endl;
    cin>>m>>n;
    max=(m>n)?m:n;
    min=(m<n)?m:n;
    gy=1;
    gb=max;
    for(int i=1; i<=min; i++)
    {
        if (m%i==0 && n%i==0)
        {
            gy=i;
        }
    }
    cout << "最大公约数:" << gy << endl;

    while(1)
    {
        if (gb%m==0 && gb%n==0)
        {
            break;
        }
        gb++;
    }
    cout << "最小公倍数:" << gb << endl;
    system("pause");
}

 请采纳,谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答