三个重要的同余式——威尔逊定理,费马小定理,欧拉定理(扩展)

首先要明白,以a≡b(modn)为例子

“≡”是数论中表示同余的符号(注意!!这个不是恒等号

同余的定义是这样的:

给定一个正整数n,如果两个整数a和b满足a-b能被n整除,即(a-b)modn=0,
那么就称整数a与b对模n同余记作a≡b(modn)同时可成立amodn=b

也就是相当于a被n整除余数等于b的意思。

威尔逊定理

(p−1)!≡p−1≡−1   (mod p)  (p是素数)

((p−1)!)%p=p−1

例题:

HDU 2973 YAPTCHA (威尔逊定理及其逆定理)

解题报告见http://blog.csdn.net/synapse7/article/details/18728157

费马小定理

假如p是质数,且gcd(a,p)=1,那么

a^(p-1) ≡1(mod p)即 ( a^(p-1) )%p = 1

我们可以利用费马小定理来简化幂模运算:由于a^(p-1)≡a^0≡1(mod p),所以a^x(mod p)有循环节,长度为p-1,所以a^x≡a^(x%(p-1))(mod p)

例如,计算    除以13的余数,先计算100%(13-1)=4,然后计算(2^(4))%13=3;

故余数为3。

欧拉定理

首先明白欧拉函数:对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)

例如φ(8)=4,因为1,3,5,7均和8互质。若n为质数则

若a,m为正整数,且gcd(a,m) = 1,则

a^φ(m)≡1(mod m)

我们亦可以利用欧拉定理来简化幂模运算:a^x≡a^(x%φ(m))(mod m)

求幂大法(广义欧拉定理)

我们将a^x≡a^(x%φ(m))(mod m)变下形:

由于a^φ(m)≡1(mod m)

a^x≡a^(x%φ(m))≡a^(x%φ(m)+φ(m))(mod m)

 

对于同余式a^b≡x(mod m),如何求出x?(1<=a,m<=1000000000,1<=b<=10^1000000)

注意到b很大,我们可以先采取一些方法降幂。

若gcd(a,m)=1,那么使用欧拉定理即可:a^b≡a^(b%φ(m))(mod m)

若gcd(a,m)>1,且b>φ(m),则有“求幂大法”——a^b≡a^(b%φ(m)+φ(m))(mod m)

(当b<=φ(m)时直接用快速幂即可)

以上所有证明可以参考synapse7

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值