檢查給定的陣列是否包含某個整數的所有約數(Python)


假設我們有一個數組nums,我們需要檢查這個陣列是否包含某個整數的所有約數。

因此,如果輸入類似於nums = [1, 2, 3, 4, 6, 8, 12, 24],則輸出為True,因為這些都是24的約數。

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

  • 最大值 := nums中的最大值
  • 臨時列表 := 一個新的列表
  • 對於範圍從1到最大值平方根的i:
    • 如果最大值能被i整除,則
      • 將i插入到臨時列表的末尾
      • 如果(最大值 / i)的商不等於i,則
        • 將(最大值 / i)的商插入到臨時列表的末尾
    • 如果臨時列表的大小與nums的大小不同,則
      • 返回False
    • 對列表nums和臨時列表進行排序
    • 對於範圍從0到nums大小-1的i:
      • 如果臨時列表[i]與nums[i]不同,則
        • 返回False
  • 返回True

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

示例程式碼

線上演示

from math import sqrt
 
def solve(nums):
   maximum = max(nums)
 
   temp = []
   for i in range(1,int(sqrt(maximum))+1):
      if maximum % i == 0:
         temp.append(i)
         if (maximum // i != i):
           temp.append(maximum // i)
 
   if len(temp) != len(nums):
      return False
 
   nums.sort()
   temp.sort()
 
   for i in range(len(nums)):
      if temp[i] != nums[i]:
         return False
   return True
   
nums = [1, 2, 3, 4, 6, 8, 12, 24]
print(solve(nums))

輸入

[1, 2, 3, 4, 6, 8, 12, 24]

輸出

True

更新於:2021年1月15日

74次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告