두 개의 배열이 있다고 가정합니다. 하나는 숫자이고 다른 하나는 소수입니다. 소수 배열에서 하나 이상의 소수를 곱하여 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 mod primes[0]이 0인 동안 do
- 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