矩阵
描述
给一个n*m的数字矩阵,允许每次可以将某一个数字加1。编程计算最少需要做多少次操作才能使其中某一行或某一列全为质数。
输入
第一行为正整数n和m (n,m≤500),接下来n行,每行m个整数,每个整数不超过
1
0
5
10
5
。
输出
仅一个正整数,表示最少操作次数。
输入样例 1
2 3
4 8 8
9 2 9
输出样例 1
【以下回答由 GPT 生成】
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num/2) + 1):
if num % i == 0:
return False
return True
def calculate_prime(matrix, rows, cols):
rows_flag = [0] * rows
cols_flag = [0] * cols
for i in range(rows):
is_row_prime = True
for j in range(cols):
if not is_prime(matrix[i][j]):
is_row_prime = False
break
if is_row_prime:
rows_flag[i] = 1
for j in range(cols):
is_col_prime = True
for i in range(rows):
if not is_prime(matrix[i][j]):
is_col_prime = False
break
if is_col_prime:
cols_flag[j] = 1
return rows_flag, cols_flag
def find_min_operations(matrix, rows, cols):
rows_flag, cols_flag = calculate_prime(matrix, rows, cols)
min_operations = 0
for i in range(rows):
if rows_flag[i] == 0:
for j in range(cols):
while not is_prime(matrix[i][j]):
matrix[i][j] += 1
min_operations += 1
for j in range(cols):
if cols_flag[j] == 0:
for i in range(rows):
while not is_prime(matrix[i][j]):
matrix[i][j] += 1
min_operations += 1
return min_operations
def main():
# 读取输入
n, m = map(int, input().split())
matrix = []
for _ in range(n):
row = list(map(int, input().split()))
matrix.append(row)
# 计算最少操作次数
operations = find_min_operations(matrix, n, m)
# 输出结果
print(operations)
if __name__ == "__main__":
main()
这样,我们可以得到最少操作次数来使其中某一行或某一列全为质数的结果。
【相关推荐】