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

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


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

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[25, 100] จำนวนเฉพาะ =[2, 5] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถคูณ 25 ด้วย 2 สองครั้งเพื่อให้ได้ 100 องค์ประกอบทั้งหมดจะเหมือนกัน

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

  • lcm_arr :=LCM ขององค์ประกอบทั้งหมดเป็น nums
  • สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
    • val :=lcm_arr/nums[i]
    • ถ้าขนาดของจำนวนเฉพาะไม่ใช่ 0 และ val ไม่ใช่ 1 ดังนั้น
      • ในขณะที่ val mod primes[0] เป็น 0, do
        • val :=val/primes[j]
    • ถ้า val ไม่เหมือนกับ 1 แล้ว
      • คืนค่าเท็จ
  • คืนค่า True

ตัวอย่าง

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

from math import gcd
def array_lcm(nums):
   ans = nums[0]
   for i in range(1,len(nums)):
      ans = (nums[i]*ans)/gcd(nums[i], ans)
   return ans
def solve(nums, primes):
   lcm_arr = array_lcm(nums)
   for i in range(len(nums)):
      val = lcm_arr/nums[i]
      for j in range(len(primes) and val != 1):
         while (val % primes[j] == 0):
            val = val/primes[j]
      if (val != 1):
         return False
   return True
nums = [25, 100]
primes = [2, 5]
print(solve(nums, primes))

อินพุต

[25, 100], [2, 5]

ผลลัพธ์

True