求1~n在模M的意义下的逆元有一种O(n)的方法:
inv[i]=(M-M/i)*inv[M%i]%M
证明如下:
设t=M/i, k=M%i(注意t是下取整)
则
两边同时除以k*i得
在把t=M/i、k=M%i带入就得到了inv[i]=(M-M/i)*inv[M%i]%M。初始值为inv[1]=1。
注意这里的M只能是质数,因为要同时除以k*i。若M不是质数,那么必存在i使得k为0,这样就会出错。
求1~n在模M的意义下的逆元有一种O(n)的方法:
inv[i]=(M-M/i)*inv[M%i]%M
证明如下:
设t=M/i, k=M%i(注意t是下取整)
则
两边同时除以k*i得
在把t=M/i、k=M%i带入就得到了inv[i]=(M-M/i)*inv[M%i]%M。初始值为inv[1]=1。
注意这里的M只能是质数,因为要同时除以k*i。若M不是质数,那么必存在i使得k为0,这样就会出错。