ปัญหา
กำหนด Array nums และ primes ตรวจสอบว่าสามารถคูณสมาชิกใน nums ด้วยจำนวนเฉพาะจาก primes ให้ทุกค่าเท่ากันได้หรือไม่
ตัวอย่าง: nums=[25,100], primes=[2,5] → 25×2×2=100 → True
แนวทางแก้ปัญหา
- หา LCM (Least Common Multiple) ของทุกค่าใน
nums - สำหรับแต่ละค่า คำนวณ
val = LCM / nums[i] - หาร
valด้วยจำนวนเฉพาะในprimesจนไม่ลงตัว - หาก
val != 1หมายถึงมีเฉพาะตัวที่ไม่อยู่ในprimes→False
ตัวอย่างโค้ด
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 p in primes:
while val % p == 0:
val //= p
if val != 1:
return False
return True
nums = [25, 100]
primes = [2, 5]
print(solve(nums, primes)) # Trueอินพุต / เอาต์พุต
Input: [25, 100], [2, 5] Output: True