मान लीजिए हमारे पास दो सरणियां हैं, एक nums है और दूसरी primes है। हमें जांचना है कि क्या nums के सभी तत्वों को primes सरणी से एक या अधिक अभाज्य संख्याओं से गुणा करके समान बनाना संभव है।
इसलिए, यदि इनपुट nums = [25, 100], primes = [2, 5] है, तो आउटपुट True होगा क्योंकि हम 25 को 2 से दो बार गुणा करके 100 प्राप्त कर सकते हैं तब सभी तत्व समान हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- lcm_arr := nums में सभी तत्वों का LCM
- i के लिए 0 से nums के आकार - 1 तक की रेंज में, करें
- val := lcm_arr/nums[i]
- यदि primes का आकार 0 नहीं है और val 1 नहीं है, तो
- जब val mod primes[0] 0 हो, तब तक करें
- val := val/primes[j]
- जब val mod primes[0] 0 हो, तब तक करें
- यदि 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