检查给定的数组是否包含某个整数的所有约数(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
广告