题目背景
今天小 C
学习了什么是公约数以及最大公约数,如下:
-
定义:如果 n∈Z,n≥2 ,而 a1,a2,...,an ,d 都是正整数,又设 d∣a1,d∣a2,...,d∣an 则 d 叫做 a1,a2,...,an 的公约数,公约数中最大的一个叫做最大公约数,最大公约数是其他所有公约数的倍数,记做 (a1,a2,...,an)=d 。
-
引理:a,b 都是正整数,且 a>b,a=b⋅q+r,0<r<b ,其中 q 和 r 都是正整数,则 a 和 b 的最大公约数等于 b 和 r 的最大公约数,即 (a,b)=(b,r) 。
题目描述
现在我们只考虑 1 ~ n
范围内所有的整数,从中选择不同的整数对,求这个整数对的最大公约数;这样求出的最大公约数会有很多,我们需要输出最大的那一组整数对的结果,也就是求所有 1≤a<b≤n 的整数对中 gcd(a,b) 的最大值。
比如:1 ~ 5
中的情况有:
输入格式
输入多行。
第一行输入一个 t ,代表有 t 组测试数据。
接下来有 t 行,每行输入一个正整数 n ,代表选择整数对的范围。
输出格式
输出 t 行。
对于每一组测试数据,输出所有 1≤a<b≤n 整数对中 gcd(a,b) 的最大值。
样例 #1
样例输入 #1
2
3
5
样例输出 #1
1
2
提示
样例解释】:
-
对于第一组测试数据,gcd(1,2)=gcd(1,3)=gcd(2,3)=1 ,所以最大的值就是 1 。
-
对于第二组测试数据,详见题面。
数据范围】:
测试点编号 |
n≥ |
n≤ |
01 ~ 10 |
2 |
103 |
11 ~ 15 |
105 |
16 ~ 20 |
109 |
对于 100% 的数据,保证 1≤t≤102,2≤n≤109 。