问题描述
萨布刚刚度过了他的三岁生日,收到了很多礼物。
尽管萨布只有三岁,但他和他的父亲约翰一样喜欢整洁。因此萨布已经开始整理这些礼物了。
萨布共收到了 N 份礼物,且第 i 件礼物的标号是 i。他想把这 N 件礼物放到一些箱子里,并保证每个箱子里的礼物不会发生反应。两件礼物会发生反应,当且仅当它们的标号的最大公约数大于 1。也就是说,萨布希望每个箱子里的礼物,他们的标号是两两互质的。
萨布需要去采购箱子。因为花的是自己的零花钱,他希望买尽量少的箱子。你能帮帮他吗?
输入格式
第一行一个整数 T,表示数据组数。
接下来 T 行,每行输入一个正整数 N。
输出格式
T 行每行一个整数 a,表示萨布最少要买 a 个箱子。
样例输入
3 1 3 4
样例输出
1 1 2
样例解释
对与 N = 4 的情况,萨布可以把礼物放入 (1, 4) 和 (2, 3) 两个箱子。
数据范围
T ≤ 100
1 ≤ N ≤ 109
/*其实就是划分等价类。一个等价类里的元素两两互质。
考虑转换成另一种集合。
同一个集合里的元素两两不互质。
则同一个集合里的元素必定在不同的等价类里。
并且任意两个不同集合里的元素,都互质。
所以每次都可以从每个集合里面选一个一起组一个等价类。
所以问题等价于=>求最大的一个集合,该集合里任意元素两两不互质。
显然偶数集就是这样一个集合。其元素个数已经有了一半,其他任意集合都要小,且这个集合不能再扩张。*/
纠正:
“所以每次都可以从每个集合里面选一个一起组一个等价类。
所以问题等价于=>求最大的一个集合,该集合里任意元素两两不互质。”的说法并不正确。
一个集合要求的是里面的元素两两不互质,但可能有其他元素跟这个集合里某个元素互质,而和其他所有的都不互质。那么并不是从每一个集合里面选一个都能两两互质。
前提假设是错误的!
还是按照以前的想法,找个最大的互不互质集。偶数集就是这样的一个集合。然后由于相邻两个数互质。得证