Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm kích thước tối đa của bất kỳ chuỗi nào của mảng đã cho trong đó mọi cặp đều đẹp bằng Python

Giả sử chúng ta có một dãy số có kích thước là n. Chúng ta phải tìm kích thước lớn nhất của dãy số con mà trong đó mỗi cặp (p, q) là một cặp đẹp? Một phân thức được cho là cặp đẹp nếu và chỉ khi nó có ít nhất một trong các điều kiện sau:1. Tính chẵn lẻ của số ước nguyên tố riêng biệt của p bằng của b. Ví dụ, giá trị 18 có hai ước số nguyên tố phân biệt:2 và 3. 2. Tính chẵn lẻ của tổng tất cả các ước số dương của p giống như q.

Vì vậy, nếu đầu vào là nums =[2,3,6,8], thì đầu ra sẽ là 3

Chương trình tìm kích thước tối đa của bất kỳ chuỗi nào của mảng đã cho trong đó mọi cặp đều đẹp bằng Python

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n:=kích thước của nums
  • Xác định ba danh sách trống cnt, tổng số, kết quả
  • đối với mỗi tôi trong nums, hãy thực hiện
    • count:=0, tot:=0
    • prime:=một danh sách mới
    • đối với mỗi j trong nums, thực hiện
      • nếu (j mod k với mọi k trong phạm vi 2 đến j) là đúng, thì
        • chèn j vào cuối số nguyên tố
    • đối với mỗi j nguyên tố, thực hiện
      • nếu tôi mod j là 0, thì
        • count:=count + 1
    • nếu số đếm là số chẵn thì
      • chèn 'số lẻ' vào cuối cnt
    • nếu không,
      • chèn 'thậm chí' vào cuối cnt
    • đối với j trong phạm vi 1 đến i, thực hiện
      • nếu tôi mod j giống 0, thì
        • tot:=tot + j
    • nếu tổng là số lẻ, thì
      • chèn 'lẻ' vào cuối tổng số
    • nếu không,
      • chèn 'chẵn' vào cuối tổng số
  • đối với tôi trong phạm vi từ 0 đến n-2, hãy thực hiện
    • đối với j trong phạm vi i + 1 đến n - 1, thực hiện
      • nếu cnt [i] giống với cnt [j] hoặc tổng [i] giống với tổng [j] thì
        • chèn nums [i] vào cuối kết quả
        • nếu j giống với n-2, thì
          • chèn nums [j] vào cuối kết quả
  • kết quả:=một danh sách mới từ một tập hợp mới từ kết quả
  • kích thước trả về của kết quả

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

15, 3, 8

Đầu ra

3