檢查Python中陣列元素是否可以透過乘以給定的素數使其相等


假設我們有兩個陣列,一個是nums,另一個是primes。我們必須檢查是否可以透過乘以primes陣列中的一個或多個素數來使nums的所有元素相等。

因此,如果輸入類似於nums = [25, 100] primes = [2, 5],則輸出將為True,因為我們可以將25乘以2兩次以獲得100,然後所有元素都相同。

為了解決這個問題,我們將遵循以下步驟:

  • lcm_arr := nums中所有元素的最小公倍數
  • 對於i從0到nums大小-1,執行:
    • val := lcm_arr/nums[i]
    • 如果primes的大小不為0且val不為1,則:
      • 當val mod primes[0]為0時,執行:
        • val := val/primes[j]
    • 如果val不等於1,則:
      • 返回False
  • 返回True

示例

讓我們看看下面的實現以更好地理解:

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

輸入

[25, 100], [2, 5]

輸出

True

更新於:2021年1月18日

115 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.