ধরি আমাদের দুটি অ্যারে আছে: nums এবং primes। আমাদের যাচাই করতে হবে nums-র সব এলিমেন্টকে primes অ্যারে থেকে এক বা একাধিক প্রাইম নাম্বার দিয়ে গুণ করে সমান করা সম্ভব কিনা।
উদাহরণস্বরূপ, nums = [25, 100] এবং primes = [2, 5] হলে আউটপুট হবে True, কারণ 25-কে ২ দিয়ে দুবার গুণ করলে ১০০ হয়।
সমাধানের ধাপসমূহ
- lcm_arr := nums-র সব এলিমেন্টের LCM
- প্রতিটি i এর জন্য:
- val := lcm_arr / nums[i]
- যদি primes খালি না হয় এবং val != 1, তবে primes-র সব প্রাইম দিয়ে val কে ভাগ করুন যতক্ষণ ভাগ যায়
- যদি শেষে val != 1 হয়, তবে false রিটার্ন করুন
- 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