View Code of Problem 3836

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define inf 0x7fffffff 
 
int gcd(long int a,long int b){         //用辗转相除法提高速度
    return a%b?gcd(b,a%b):b;
}
 
int main(){
        long int x,y,p;                
        while(scanf("%ld %ld",&x,&y)!=EOF){
            long long min=inf,ansp,ansq;
            for(p=x;p<=sqrt(x*y);p++){  
                if((x*y)%p==0&&gcd(p,x*y/p)==x){        
                    int sum=p+x*y/p;
                    if(sum<min){
                        min=sum;
                        ansp=p;
                        ansq=x*y/p;
                    }
                }
            }
            printf("%lld %lld\n",ansp,ansq);
        }
            
        return 0;
} 

Double click to view unformatted code.


Back to problem 3836