View Code of Problem 3836

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

int gcd(int  a,int   b) {
    if(b==0)
        return a;
    else
        return gcd(b,a%b);
}

int main() {
    int   m,n,a[1000]= {0},b,k=0;
    cin>>m>>n;
    if(m>n)
        swap(m,n);
    if(m==n) {
        cout<<m<<" "<<n<<endl;
    }

    else {
        for(int i=1; i<=sqrt(m*n); i++) {
            if(m*n%i==0&&gcd(i,m*n/i)==m&&i<=m*n/i) {
                a[k++]=i;
            }
        }
        int j=0,min=m+n;
        for(int i=0; i<k; i++) {
            if(a[i]+m*n/a[i]<=min) {
                j=i;
            }
        }
        cout<<a[j]<<" "<<m*n/a[j]<<endl;
    }
}

Double click to view unformatted code.


Back to problem 3836