Python中查找gcd大于1的矩阵中连续元素个数的程序

假设我们有一个包含 n 行 m 列的矩阵。我们必须找出矩阵中元素的 gcd 大于 1 的最大连续元素数。连续元素可以在矩阵中水平或垂直。

所以,如果输入是这样的

37912
5946
78510

m = 4,n = 3;那么输出将是3。

给定矩阵的第四列是 12, 6, 10。这列元素的 gcd 是 2。因为有三个元素,所以答案是 3。

示例

让我们看看以下实现以获得更好的理解 -

from math import gcd
def solve(n, m, input_list):
   mat = [[[0] *m] *n] *n
   res = 0
   for i in range(n):
      for j in range(i, n):
         gcd_temp = 0
         x = 0
         for k in range(m):
            if i == j:
               mat[i][j][k] = input_list[i][k]
            else:
               mat[i][j][k] = gcd(mat[i][j-1][k], input_list[j][k])
gcd_temp = gcd(gcd_temp, mat[i][j][k])
if gcd_temp > 1:
x += j - i + 1
else:
res = max(res,x)
if mat[i][j][k] > 1:
gcd_temp = mat[i][j][k]
x = j - i + 1
res = max(res,x)
return res
print(solve(3, 4, [[3, 7, 9, 12], [5, 9, 4, 6], [7, 8, 5, 10]]))

输入

3, 4, [[3, 7, 9, 12], [5, 9, 4, 6], [7, 8, 5, 10]]
输出结果
3

猜你喜欢