Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าอาร์เรย์มีตัวหารครบทุกตัวของจำนวนเต็มบางจำนวนหรือไม่ ใน Python


ปัญหา

ให้อาร์เรย์ nums ตรวจสอบว่ามันเป็นชุดตัวหารครบของจำนวนเต็มบางจำนวนหรือไม่

ตัวอย่าง

nums = [1, 2, 3, 4, 6, 8, 12, 24] → เป็นตัวหารของ 24 → True

แนวคิดการแก้ปัญหา

  1. หาค่าสูงสุดในอาร์เรย์ (เป็นตัวเลขที่ต้องการ)
  2. หาตัวหารทั้งหมดของค่าสูงสุดนั้น
  3. เปรียบเทียบชุดตัวหารกับอาร์เรย์ต้นฉบับ (เรียงลำดับก่อนเปรียบเทียบ)

โค้ดตัวอย่าง

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 i != maximum // i:
                temp.append(maximum // i)
    if len(temp) != len(nums):
        return False
    return sorted(temp) == sorted(nums)

print(solve([1, 2, 3, 4, 6, 8, 12, 24]))  # True

อินพุต / เอาต์พุต

Input:  [1, 2, 3, 4, 6, 8, 12, 24]
Output: True