📅  最后修改于: 2023-12-03 15:11:23.358000             🧑  作者: Mango
给定一个大小为N×N的正方形矩阵,请计算其中相邻单元格的和为素数的单元格数量。
在二维矩阵中,我们可以采用嵌套循环的方式遍历每一个单元格。对于每一个单元格,我们取其相邻的四个单元格,算出它们的和是否为素数。如果是则计数器自增1。
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def count_adjacent_prime(matrix):
count = 0
N = len(matrix)
for i in range(N):
for j in range(N):
if i > 0:
# 上方单元格
s = matrix[i][j] + matrix[i-1][j]
if is_prime(s):
count += 1
if i < N - 1:
# 下方单元格
s = matrix[i][j] + matrix[i+1][j]
if is_prime(s):
count += 1
if j > 0:
# 左边单元格
s = matrix[i][j] + matrix[i][j-1]
if is_prime(s):
count += 1
if j < N - 1:
# 右边单元格
s = matrix[i][j] + matrix[i][j+1]
if is_prime(s):
count += 1
return count
假设有一个3×3的矩阵如下:
1 2 3
4 5 6
7 8 9
则计算结果为:
count_adjacent_prime([[1,2,3], [4,5,6], [7,8,9]]) # 返回值为2
其中符合条件的单元格为(1,2)和(2,1),其相邻的四个单元格的和均为素数,因此计数器自增为2。
由于双重循环遍历了矩阵中的所有单元格,因此时间复杂度为O(N^2),其中N为矩阵的规模。