#CYF0033. 最大的 gcd

最大的 gcd

题目背景

今天小 C 学习了什么是公约数以及最大公约数,如下:

  • 定义:如果 nZ,n2n \in Z, n \geq 2 ,而 a1,a2,...,ana_1, a_2, ... , a_ndd 都是正整数,又设 da1,da2,...,dand \mid a_1, d \mid a_2, ... , d \mid a_ndd 叫做 a1,a2,...,ana_1, a_2, ... , a_n 的公约数,公约数中最大的一个叫做最大公约数,最大公约数是其他所有公约数的倍数,记做 (a1,a2,...,an)=d(a_1, a_2, ... , a_n) = d

  • 引理:a,ba, b 都是正整数,且 a>b,a=bq+r,0<r<ba > b, a = b · q + r, 0 < r < b ,其中 qqrr 都是正整数,则 aabb 的最大公约数等于 bbrr 的最大公约数,即 (a,b)=(b,r)(a, b) = (b, r)​​ 。

题目描述

现在我们只考虑 1 ~ n 范围内所有的整数,从中选择不同的整数对,求这个整数对的最大公约数;这样求出的最大公约数会有很多,我们需要输出最大的那一组整数对的结果,也就是求所有 1a<bn1≤a<b≤n 的整数对中 gcd(a,b)gcd(a,b) 的最大值。

比如:1 ~ 5 中的情况有:

  • gcd(1,2)=1gcd(1, 2) = 1
  • gcd(1,3)=1gcd(1, 3) = 1
  • gcd(1,4)=1gcd(1, 4) = 1
  • gcd(1,5)=1gcd(1, 5) = 1
  • gcd(2,3)=1gcd(2, 3) = 1
  • gcd(2,4)=2gcd(2, 4) = 2
  • gcd(2,5)=1gcd(2, 5) = 1
  • gcd(3,4)=1gcd(3, 4) = 1
  • gcd(3,5)=1gcd(3, 5) = 1
  • gcd(4,5)=1gcd(4, 5) = 1
  • 其中 gcd(2,4)gcd(2, 4) 这个整数对的最大公约数最大,所以输出 22​ 。

输入格式

输入多行。

第一行输入一个 tt ,代表有 tt 组测试数据。

接下来有 tt 行,每行输入一个正整数 nn ,代表选择整数对的范围。

输出格式

输出 tt 行。

对于每一组测试数据,输出所有 1a<bn1≤a<b≤n 整数对中 gcd(a,b)gcd(a, b) 的最大值。

样例 #1

样例输入 #1

2
3
5

样例输出 #1

1
2

提示

样例解释】:

  • 对于第一组测试数据,gcd(1,2)=gcd(1,3)=gcd(2,3)=1gcd(1, 2) = gcd(1, 3) = gcd(2, 3) = 1 ,所以最大的值就是 11
  • 对于第二组测试数据,详见题面。

数据范围】:

测试点编号 nn \geq nn \leq
01 ~ 10 22 10310^3
11 ~ 15 10510^5
16 ~ 20 10910^9

对于 100%100\% 的数据,保证 1t102,2n1091 \leq t \leq 10^2, 2 \leq n \leq 10^9