题解:给GCD LCM求x y。
题解:c++得用pollard分解质因数不然会超时之后再补,java给了快三倍的时间。
12 15 3 60 15 20 5 60 4 6 2 12
从这几组可以看出GCD LCM 和x y 是倍数关系,尽量减小倍数的范围就好了。
import java.util.Scanner;
public class Main {
static long gcd(long a,long b){
long tmp;
while (b!=0){
tmp = b;
b = a % b;
a = tmp;
}
return a;
}
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
long a,b,c,i;
while (cin.hasNext()){
a = cin.nextLong();
b = cin.nextLong();
c = b/a;
for(i=(long)Math.sqrt(c);i>=1;i--){
if(c%i==0&&gcd(i,c/i)==1){
System.out.println((a*i)+" "+(b/i));
break;
}
}
}
}
}