编写程序,读入整数m(它是两非负整数x和y的和),以及整数n(它是x,y的最小公倍数),求x和y。

编写程序,读入整数m(它是两非负整数x和y的和),以及整数n(它是x,y的最小公倍数),求x和y。

输入说明:

若干组两个非负整数m和n,以0 0结束。

输出说明:

按照非降序输出x和y

Sample Input

10 12

45 54

0 0

Sample Output

4 6

18 27

#include <stdio.h>
#define N 10

int main()
{
    int x[N],y[N];
    int m[N],n[N];
    int count=0,t;
    for(int i=0;i<N;i++)
    {
        scanf("%d%d",&m[i],&n[i]);
        if(m[i]==0 && n[i]==0)
            break;
        count++;
    }

    for(int i=0;i<count;i++)
    {
        for(x[i]=1;x[i]<m[i];x[i]++)
        {
            y[i]=m[i]-x[i];
            if(n[i]%x[i]==0 && n[i]%y[i]==0)
            {
                if(x[i]>y[i])
                {
                    t=x[i];
                    x[i]=y[i];
                    y[i]=t;
                }
                break;
            }
        }
    }
    
    for(int i=0;i<count;i++)
    {
        printf("%d %d\n",x[i],y[i]);
    }
    
    return 0;    
}