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

开启你的职业生涯

完成课程获得认证

开始学习
广告