檢查Python中陣列元素是否可以透過乘以給定的素數使其相等
假設我們有兩個陣列,一個是nums,另一個是primes。我們必須檢查是否可以透過乘以primes陣列中的一個或多個素數來使nums的所有元素相等。
因此,如果輸入類似於nums = [25, 100] primes = [2, 5],則輸出將為True,因為我們可以將25乘以2兩次以獲得100,然後所有元素都相同。
為了解決這個問題,我們將遵循以下步驟:
- lcm_arr := nums中所有元素的最小公倍數
- 對於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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP