Algorithm 找到一个数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

假设我有数字1到N,我想根据以下标准将它们划分为子集:

  • 每个数字只能出现在一个子集中
  • 子集的元素必须相互互质
  • 最小化子集的总数
  • 我的方法是用埃拉托斯烯筛找到N以下的所有素数,然后将它们相应地划分成子集。例如,对于N=5,我可以有两个最小值为{1,2,3,5}和{4}的子集。但我不确定如何在子集中分配元素,以便每个子集都有相互互质的元素。 以下是我的逐步方法:

  • 集合1:{N以内的所有素数}
  • 集合2:{2k,3k,5k…pk},其中p是素数,pk
  • 其余元素
  • 问题是如何使步骤3中的元素在子集中相互互质
    有人能就如何实现它和我的逻辑中的缺陷提出更好的方法吗?

    这似乎是个棘手的问题。同一子集中不能有两个偶数,因此子集的最小数目为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是互质的。

    我确实理解这一点,但我也必须最小化子集的总数。这将最小化所理解的子数,谢谢!我明白,但我也必须最小化子集的总数。这将最小化子子集的数量。谢谢!交叉过帐:。请交叉邮寄:。请