麻烦大家帮小弟我看看这个求最小公倍数的题错哪了,是ACM题,测试例子通过了,但提交总说wrong answer

麻烦大家帮我看看这个求最小公倍数的题哪里错了,是ACM题,测试例子通过了,但提交总说wrong answer
#include <iostream>
#include<math.h>
using namespace std;

int main()
{
    long m,n,k=0,m1,n1;
    unsigned long a,b,c,i=0,p;
    while(cin>>m&&cin>>n)
    {
        if(i>0)
            cout<<endl;
        i++;
        k++;
        if(m==0&&n==0)
        {
            cout<<"Case "<<k<<":"<<endl;
            cout<<"no GCD"<<endl;
            cout<<"no LCM"<<endl;
        }
        else
        {
            m1=fabs(m);
            n1=fabs(n);
            if((m1==0&&n1!=0)||(n1==0&&m1!=0))
            {
                if(m1==0)
                    a=n1;
                else
                    a=m1;
                cout<<"Case "<<k<<":"<<endl;
                cout<<"GCD("<<m<<","<<n<<") = "<<a<<endl;
                cout<<"no LCM"<<endl;
            }
        else
        {
            if(m1==n1)
            {
                cout<<"Case "<<k<<":"<<endl;
                cout<<"GCD("<<m<<","<<n<<") = "<<m1<<endl;
                cout<<"LCM("<<m<<","<<n<<") = "<<m1<<endl;
            }
            else
            {
            if(m1<n1)
            {
                a=n1;
                c=m1;
            }
            else
            {
                a=m1;
                c=n1;
            }
            p=m1*n1;
            while(c!=0)
            {
                b=a%c;
                a=c;
                c=b;
            }
            cout<<"Case "<<k<<":"<<endl;
            cout<<"GCD("<<m<<","<<n<<") = "<<a<<endl;
            cout<<"LCM("<<m<<","<<n<<") = "<<p/a<<endl;
            }
        }
        }