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要自己写