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

Kiểm tra xem các phần tử của mảng có thể bằng nhau hay không bằng cách nhân các số nguyên tố đã cho trong Python

Giả sử chúng ta có hai mảng, một mảng là num và một mảng khác là số nguyên tố. Chúng ta phải kiểm tra xem có thể làm cho tất cả các phần tử của các số bằng nhau hay không bằng cách nhân một hoặc nhiều số nguyên tố từ mảng số nguyên tố.

Vì vậy, nếu đầu vào giống như nums =[25, 100] số nguyên tố =[2, 5], thì đầu ra sẽ là True vì chúng ta có thể nhân 25 với 2 hai lần để được 100 thì tất cả các phần tử đều giống nhau.

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

  • lcm_arr:=LCM của tất cả các phần tử tính bằng nums
  • đối với tôi trong phạm vi từ 0 đến kích thước là nums - 1, thực hiện
    • val:=lcm_arr / nums [i]
    • nếu kích thước của các số nguyên tố không phải là 0 và val không phải là 1, thì
      • trong khi số nguyên tố val mod [0] là 0, hãy thực hiện
        • val:=val / primes [j]
    • nếu val không giống 1, thì
      • trả về Sai
  • trả về True

Ví dụ

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

from math import gcd
def array_lcm(nums):
   ans = nums[0]
   for i in range(1,len(nums)):
      ans = (nums[i]*ans)/gcd(nums[i], ans)
   return ans
def solve(nums, primes):
   lcm_arr = array_lcm(nums)
   for i in range(len(nums)):
      val = lcm_arr/nums[i]
      for j in range(len(primes) and val != 1):
         while (val % primes[j] == 0):
            val = val/primes[j]
      if (val != 1):
         return False
   return True
nums = [25, 100]
primes = [2, 5]
print(solve(nums, primes))

Đầu vào

[25, 100], [2, 5]

Đầu ra

True