#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.