基本数学知识1
全排列
例题分析
行列式的性质
2.矩阵A的某一行(列)乘以k加到另一行(列),其行列式不变
3.矩阵A的某一行(列)乘以k,行列式的值|A’|= kIA|
4.矩阵A任意两行或两列互换,|A’|=-lA|
证明:逆序数的性质两个数交换最后的逆序对要不加一要不就减一
代码复现
#高斯消元求行列式
def partial_pivot(mat, n, i):
#进行部分主元选取,返回行交换后的矩阵和交换次数
max_row = i
for r in range(i + 1, n):
if abs(mat[r][i]) > abs(mat[max_row][i]):
max_row = r
# 交换行
mat[i], mat[max_row] = mat[max_row], mat[i]
return mat, 1 if max_row != i else 0
def gauss_elimination_determinant(mat):
n = len(mat)
det = 1
swap_count = 0
for i in range(n):
# 进行部分主元选取
mat, swaps = partial_pivot(mat, n, i)
swap_count += swaps
# 如果主元为0,则行列式为0
if mat[i][i] == 0:
return 0
det *= mat[i][i]
for j in range(i + 1, n):
factor = mat[j][i] / mat[i][i]
for k in range(i, n):
mat[j][k] -= factor * mat[i][k]
# 交换行会改变行列式的符号
det *= (-1) ** swap_count
return det
# 示例矩阵
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 10]
]
det = gauss_elimination_determinant(matrix)
print("行列式的值为:", det)
朴素素数判定
代码复现
埃氏判定
代码复现
例题分析
代码复现
def get_prime(n):
vis = [1, 1]+[0]*(n-1)
prime = []
for i in range(2, n+1):
if vis[i] == 0:
prime.append(i)
for j in range(i+i,n + 1, i):
vis[j] = 1
return prime,vis
n = int(input())
prime, vis = get_prime(n)
ans = 0
for i in range(len(prime)):
for j in range(i + 1, len(prime)):
if vis[prime[j]-prime[i]] == 0:
ans += 1
print(ans)
感悟
坚持总会有胜利的一天!
蓝桥杯云课学习笔记分享,欢迎大佬们批评指正!
一直在进步就好咯!
by 闻不多