Cho mảng nums. Kiểm tra xem mảng có chứa đúng tất cả các ước số của một số nguyên nào đó hay không.
Ví dụ: [1,2,3,4,6,8,12,24] → True vì đây là tất cả ước số của 24.
Giải thuật
- Tìm phần tử lớn nhất
maximumtrong mảng. - Tính tất cả ước số của
maximumlưu vào mảngtemp. - So sánh độ dài và các phần tử của
tempvớinums(sau khi sắp xếp).
Mã ví dụ
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))
Đầu vào
[1, 2, 3, 4, 6, 8, 12, 24]
Đầu ra
True