4.分成互质组给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?时间限制:1000内存限制:65536输入第一行是一个正整数n。1 <= n <= 10。 第二行是n个不大于10000的正整数。输出一个正整数,即最少需要的组数。样例输入```614 20 33 117 143 175```样例输出```3```
【喵呜刷题小喵解析】这个题目要求将给定的n个正整数分成若干组,使得每组中任意两个数互质。互质指的是两个数除了1以外没有其他公约数。我们需要求出最少需要的组数。解决这个问题的一种方法是尝试将每个数字加入已经存在的组,或者创建新的组。首先,我们遍历每个数字,然后检查它是否可以和已经存在的组中的任何数字互质。如果可以,我们将它加入该组;否则,我们创建一个新的组,只包含这个数字。在C++中,我们可以使用`vector`来存储数字和组。对于每个数字,我们遍历所有的组,检查它是否可以和组中的任何数字互质。我们可以使用欧几里得算法(辗转相除法)来计算两个数字的最大公约数。如果最大公约数大于1,那么这两个数字不是互质的。最后,我们输出组的数量,这就是最少需要的组数。在样例输入中,数字14、20、117和175不能和其他数字互质,所以它们各自形成一组;数字33和143可以互质,所以它们形成一组。因此,最少需要的组数是3。