Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 소수를 곱하여 배열의 요소를 같게 만들 수 있는지 확인

<시간/>

두 개의 배열이 있다고 가정합니다. 하나는 숫자이고 다른 하나는 소수입니다. 소수 배열에서 하나 이상의 소수를 곱하여 nums의 모든 요소를 ​​동일하게 만드는 것이 가능한지 여부를 확인해야 합니다.

따라서 입력이 nums =[25, 100] 소수 =[2, 5]와 같으면 25에 2를 두 번 곱하여 100을 얻을 수 있으므로 모든 요소가 동일하므로 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • lcm_arr :=nums의 모든 요소에 대한 LCM
  • 0부터 숫자 - 1까지의 범위에 있는 i에 대해
    • val :=lcm_arr/nums[i]
    • 소수의 크기가 0이 아니고 val이 1이 아니면
      • val mod primes[0]이 0인 동안 do
        • val :=val/primes[j]
    • val이 1과 같지 않으면
      • 거짓을 반환
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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