สมมติว่าเรามีจำนวนอาร์เรย์ เราต้องตรวจสอบว่าอาร์เรย์นี้มีตัวหารทั้งหมดของจำนวนเต็มหรือไม่
ดังนั้น หากอินพุตมีค่าเท่ากับ 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] แล้ว
- คืนค่าเท็จ
- ถ้า temp[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