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

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


สมมติว่าเรามีจำนวนอาร์เรย์ เราต้องตรวจสอบว่าอาร์เรย์นี้มีตัวหารทั้งหมดของจำนวนเต็มหรือไม่

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[1, 2, 3, 4, 6, 8, 12, 24] ผลลัพธ์จะเป็น True เนื่องจากเป็นตัวหารของ 24

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • สูงสุด :=สูงสุดของ nums
  • temp :=รายการใหม่
  • สำหรับฉันในช่วง 1 ถึงรากที่สองของค่าสูงสุด ทำ
    • ถ้าค่าสูงสุดหารด้วย i ลงตัว
      • ใส่ i เมื่อสิ้นสุดอุณหภูมิ
      • ถ้าผลหารของ (สูงสุด / i) ไม่เหมือนกับ i แล้ว
        • แทรกผลหารของ (สูงสุด / i) ที่จุดสิ้นสุดของอุณหภูมิ
    • ถ้าขนาดของอุณหภูมิไม่เท่ากับขนาดของ nums
      • คืนค่าเท็จ
    • เรียงลำดับตัวเลขและอุณหภูมิของรายการ
    • สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
      • ถ้า temp[i] ไม่เหมือนกับ nums[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