Algorithm 找到一个数N以内的所有互质子集
假设我有数字1到N,我想根据以下标准将它们划分为子集:Algorithm 找到一个数N以内的所有互质子集,algorithm,subset,dynamic-programming,primes,sieve-of-eratosthenes,Algorithm,Subset,Dynamic Programming,Primes,Sieve Of Eratosthenes,假设我有数字1到N,我想根据以下标准将它们划分为子集: 每个数字只能出现在一个子集中 子集的元素必须相互互质 最小化子集的总数 我的方法是用埃拉托斯烯筛找到N以下的所有素数,然后将它们相应地划分成子集。例如,对于N=5,我可以有两个最小值为{1,2,3,5}和{4}的子集。但我不确定如何在子集中分配元素,以便每个子集都有相互互质的元素。 以下是我的逐步方法: 集合1:{N以内的所有素数} 集合2:{2k,3k,5k…pk},其中p是素数,pk
有人能就如何实现它和我的逻辑中的缺陷提出更好的方法吗?这似乎是个棘手的问题。同一子集中不能有两个偶数,因此子集的最小数目为floor(n/2)
如果n是偶数,则可以很容易地获得子集{2i+1,2i+2}的界。对于n奇数,您也可以这样做,但是将{n-2,n-1,n}放在最后一个子集中。注意,相邻的数字总是互质的,当n是奇数时,n,n-2是互质的。这似乎是一个技巧性的问题。同一子集中不能有两个偶数,因此子集的最小数目为floor(n/2)
如果n是偶数,则可以很容易地获得子集{2i+1,2i+2}的界。对于n奇数,您也可以这样做,但是将{n-2,n-1,n}放在最后一个子集中。请注意,相邻的数总是互质的,当n为奇数时,n,n-2是互质的。我确实理解这一点,但我也必须最小化子集的总数。这将最小化所理解的子数,谢谢!我明白,但我也必须最小化子集的总数。这将最小化子子集的数量。谢谢!交叉过帐:。请交叉邮寄:。请