目录
矩阵运算
基础数论
GCD和LCM
质数
唯一分解定理
快速幂
矩阵运算
矩阵加减法:
矩阵和数相乘:
矩阵转置:
矩阵乘法:
# 矩阵乘法 def mul(A,B):N,M=len(A),len(A[0])#行数,列数_M,K=len(B),len(B[0])if M!=_M:return None#答案是N*K的C=[[0]*K for _ in range(N)]for i in range(N):for j in range(K):for k in range(M):C[i][j]+=A[i][k]*B[k][j]return C# 读入矩阵 def read(A,n):#n代表行数for _ in range(n):A.append(list(map(int,input().split()))) # 打印矩阵 def write(A):for x in A:print(' '.join(map(str,x)))A=[] B=[] N,M,K=map(int,input().split()) read(A,N) read(B,M) C=mul(A,B) write(C)
基础数论
整除的传递性
因为m|(a-b)即k*m=a-b,a=k*m+b,两边同时对m求模
a % m = (k*m+b) % m,即a % m = k + b % m,记为ab(mod m)
GCD和LCM
GCD和LCM的关系:
质数
def is_prime(n):if n<=1:return Falsem=int(n**0.5)for i in range(2,m+1):if x%i==0:return Falsereturn True#疑似质数 n=int(input()) ans=0 for i in range(1,n+1):#逐个枚举[1,n]#判断数字i的数位之和是否为质数x=icnt=0while x!=0:cnt+=x%10x//=10if is_prime(cnt):ans+=1 print(ans)
质数筛选:
def get_prime(n):#求n以内所有的质数#vis表示是否删除vis=[0]*(n+1)vis[0]=vis[1]=1#质数列表prime=[]#从小到大,找到第一个未标记的数字,就是质数for i in range(2,n+1):if vis[i]==0:prime.append(i)#从2倍的i开始,删除它是质数的可能性for j in range(i+i,n+1,i):vis[j]=1return prime#打印100以内的素数 print(get_prime(100))