程序找到给定数组的任何序列的最大大小,其中每一对在 Python 中都很好

假设我们有一个大小为 n 的序列 nums。我们必须找到 nums 子序列的最大大小,其中每对 (p, q) 都是不错的对?当且仅当它至少满足以下条件之一时,才称 pait 为好对: 1. p 的不同素因数的奇偶性等于 b 的奇偶性。例如,值 18 有两个不同的素因数:2 和 3。 2. p 的所有正因数之和的奇偶性与 q 相同。

因此,如果输入类似于 nums = [2,3,6,8],则输出将为 3

示例

让我们看看以下实现以更好地理解 -

def solve(nums):
   n = len(nums)
   cnt = []
   total = []
   result = []
   for i in nums:
      count = 0
      tot = 0

      prime = []
      for j in nums:
         if all(j % k for k in range(2, j)) == True:
            prime.append(j)

      for j in prime:
         if i % j == 0:
            count += 1
      if count % 2:
         cnt.append('odd')
      else:
         cnt.append('even')

      for j in range(1,i+1):
         if i % j == 0:
            tot += j

      if tot % 2:
         total.append('odd')
      else:
         total.append('even')

   for i in range(n-1):
      for j in range(i+1, n):

         if cnt[i] == cnt[j] or total[i] == total[j]:
            result.append(nums[i])

            if j == n-1:
               result.append(nums[j])

   result = list(set(result))
   return len(result)

nums = [2,3,6,8]
print(solve(nums))

输入

15, 3, 8
输出结果
3