题目 3039:
分成互质组
时间限制: 1s 内存限制: 128MB 提交: 12 解决: 4
题目描述
给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?
输入格式
第一行是一个正整数n。1 ≤ n ≤ 10。
第二行是n个不大于10000的正整数。
输出格式
一个正整数,即最少需要的组数。
样例输入
复制
6 14 20 33 117 143 175
样例输出
复制
3
思路分析:
题目要我们求输入的数中互质组的最小个数,互质就是两个数的最大公约数是1,即两数只有1这一个公约数。我们可以边搜索边开新组,首先从第一个组开始,将第一个数加入第一组,然后第一个数后面的数如果与这一组中的所有数都满足互质,则可以加入这一组,如果与组中的一个不满足则去看下一个数,直到走完所有的数,这样第一组就完成了,接着开第二个组,同样从第一个数开始走到最后一个数,目的就是去将无法加入第一组的数加入第二组,首先我们会找到第一个无法加入第一组的那个数,我们将他加入第二组,继续往后走,如果后面那些不能加入第一组的数满足与第二组的所有数互质则加入第二组,不能则等待加入第三组或更多组,以此类推直到将所有数放到对应组中。最终我们所开的组数就是最少需要的组数。
代码展示:
import java