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

ตรวจสอบว่าผลคูณของอาร์เรย์ที่มีจำนวนเฉพาะเป็นกำลังสองสมบูรณ์ใน Python . หรือไม่


สมมติว่าเรามีจำนวนอาร์เรย์ที่มีจำนวนเฉพาะทั้งหมด เราต้องตรวจสอบว่าผลคูณของตัวเลขทั้งหมดที่มีใน nums เป็นกำลังสองสมบูรณ์หรือไม่

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,3,7,7] ผลลัพธ์จะเป็น True เนื่องจากผลคูณขององค์ประกอบทั้งหมดใน nums คือ 441 ซึ่งเป็นกำลังสองสมบูรณ์เนื่องจาก 21^2 =441

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

  • m :=แผนที่ที่มีองค์ประกอบทั้งหมดเป็น num และความถี่
  • สำหรับแต่ละคีย์ใน nums ทำ
    • ถ้า m[key] เป็นเลขคี่
      • คืนค่าเท็จ
  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from collections import defaultdict
def solve(nums) :
   m = defaultdict(int)
   for key in nums :
      m[key] += 1
   for key in nums :
      if m[key] % 2 == 1 :
         return False
   return True
nums = [3,3,7,7]
print(solve(nums))

อินพุต

[3,3,7,7]

ผลลัพธ์

True