import math
# 最大公约数
def gcd(n, m):
    return math.gcd(n, m)
# 最小公倍数
def lcm(n, m):
    return n*m//gcd(n,m)
# 询问次数
t = int(input())
for _ in range(0, t):
    # a,b两数和
    n = int(input())
    # // 是地板除(floor division)的运算符。结果只取整数部分
    a = n // 2
    b = n - a
    # 最小公约数是1
    while(gcd(a,b)!=1):
        a -= 1
        b += 1
    print(a, b)

  • a、b尽可能接近的话,最小公倍数lcm会更大,a、b互质时最大,为ab
  • 相邻两个素数间隔不会太大,很快就能枚举出来(10^13以内最大素数间隔是777)
  • 777*10^5还是可以枚举的,空间给200个(C++)
  • // 是地板除(floor division)的运算符。它用于计算两个数相除后的结果,并返回不大于结果的最大整数。具体来说,a // b 的结果是删除小数点后的部分,即取结果的整数部分,但这个整数部分是向下取整的(即向负无穷大方向取最接近的整数)。
  • python3有gcd,没有lcm要自己写