檢查給定的陣列是否包含某個整數的所有約數(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
- 如果臨時列表[i]與nums[i]不同,則
- 如果最大值能被i整除,則
- 返回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
廣告