要求最大的lcm,根据公式,lcm=a*b/gcd(a,b)

那么我们得想办法让a*b尽可能大,因为b=n-a,所以根据一元二次方程最大值为a=n/2时

gcd最小为1,只有当a与b除了1以外没有任何公因数时出现

所以我们就可以从n/2开始遍历,每一次都求gcd,如果gcd=1,那么就是最大值

这里需要注意的是i>=1,而不是i>=2,因为有的值,只有当i==1时,才能取公共值



import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int t=scanner.nextInt();
		while(t-->0) {
			long a=0;
			long b=0;
			BigInteger max=BigInteger.ZERO;
			long n=scanner.nextLong();
			for (long i = n/2; i >=1; i--) {
				if(gcd(i, n-i)==1) {
					a=i;
					b=n-i;
					break;

				}
				
			}
			System.out.println(a+" "+b);
		}

	}
	public static long gcd(long a,long b) {
		BigInteger aBigInteger=new BigInteger(""+a);
		BigInteger bBigInteger=new BigInteger(""+b);
		BigInteger gcd=aBigInteger.gcd(bBigInteger);
		return Long.parseLong(gcd.toString());
	}

}