读 CSI讲义 费马小定理
费马小定理
最近在上计算机安全学选修课.. 读老师博客..现在当是写阅读笔记吧.
这里贴出老师的简书
建议先看看链接先..毕竟我这些东西只是搞笑一下的..
遵循一下这个原则…
- 观察
- 找规律
- 求证
首先是一段python
代码,其实下面的才能直接copy后直接跑(我没学过)
# n是某个正整数
n = 11;
for i in range(1, n): # i循环从1到n-1
for j in range(1, n): # j循环从1到n-1
print ((i * j) % n),# 输出 (i*j) mod n
print("\n")
发现打印的结果每一行都是 [1, n-1]的排列, 但是当n == 某个合数时规律消失
却也并非完全消失, 与n互素的行规律仍在, 后话
知道其实i, j是[1, n-1]的循环,打印的就是(ij) mod n
根据老师文章所提示,依式子以及结果,得到2条式子
i1 mod n, i2 mod n, …, i(n-1) mod n [1]
1, 2, 3, 4, …, n-1 [2]
式子[1]与式子[2]中元素各自连乘,得另外两个相等的式子
i^(n-1) (n-1)! mod n [3]
(n-1)! mod n [4]
关键在于知道[3] == [4]后, [6]式如何得来, 即
i^(n-1) (n-1)! ≡ (n-1)! mod n [5]
推导出
i^(n-1) ≡ 1 mod n [6]
首先给出一个定义
设m是大于1的正整数,a、b是整数,如果(a-b)|m,则称a与b关于模m同余,记作a≡b(mod m),读作a与b对模m同余
我们可以把上面的两个式子简化成
a c ≡ b c mod m [7],
现在证明, 当 c 与 m互素时, 上式可以化简成
a ≡ b mod m
∵ a * c ≡ b * c mod m
∴ m | (a * c - b * c)
∴ m | (a - b) * c
∵ m 与 c 互素
∴ m | (a - b) // 整除的性质
∴ a ≡ b mod m
上面的证明并不严谨..只是一个思路..(有问题的话恳请指正)
说了这么多..谁和你说 c 和 m 互素了?? 回到[6]式
就是问 (n-1)! 为什么和 n是互素的?
首先我们知道发现规律的n,都是素数(比如代码用的11),..而一个素数与 [1, n-1]的整数都是互素的
就是说
∀i ∈ [1, n-1], 都满足 i ≡ 1 mod n
那么根据同余关系的性质
同余式相乘 若a≡b (mod m),c≡d(mod m),则ac≡bd (mod m)
可以推得,所有的这些与n互素的元素之积, 亦即(n-1)! ≡ 1 mod n成立
根据[5][6],我们能总结出,对于素数n,取任意大于1小于n-1的整数(此条件并不必要,为什么?),我们有,i^(n-1) ≡ 1 mod n
但是依据上面的证明,显然但凡c和m互素,皆可得到式6。
上述亦即费马小定理
假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)
读 CSI讲义 费马小定理的更多相关文章
- BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 123 Solved: 73 [ Submit][ St ...
- 数学【p2613】 【模板】有理数取余(费马小定理)
题目描述 给出一个有理数 c=a/b ,求 c mod 19260817的值. 说明 对于所有数据, 0≤a,b≤10^10001 分析: 一看题 这么短 哇简单!况且19260817还是个素数!(美 ...
- hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)
题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3. ...
- nyoj1000_快速幂_费马小定理
又见斐波那契数列 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 斐波那契数列大家应该很熟悉了吧.下面给大家引入一种新的斐波那契数列:M斐波那契数列. M斐波那契数列 ...
- poj 3734 Blocks 快速幂+费马小定理+组合数学
题目链接 题意:有一排砖,可以染红蓝绿黄四种不同的颜色,要求红和绿两种颜色砖的个数都是偶数,问一共有多少种方案,结果对10007取余. 题解:刚看这道题第一感觉是组合数学,正向推了一会还没等推出来队友 ...
- 数论初步(费马小定理) - Happy 2004
Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...
- 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
Sum Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...
- HDU 5667 Sequence 矩阵快速幂+费马小定理
题目不难懂.式子是一个递推式,并且不难发现f[n]都是a的整数次幂.(f[1]=a0;f[2]=ab;f[3]=ab*f[2]c*f[1]...) 我们先只看指数部分,设h[n]. 则 h[1]=0; ...
随机推荐
- Guava之RateLimiter的设计
Guava源码中很详尽的解释了RateLimiter的概念. 从概念上看,限流器以配置速率释放允许的请求(permit).如有必要,调用acquire()将会阻塞知道一个允许可用.一旦被获取(acqu ...
- HTML5 的拖放(实例:两个div之间拖放图片)
重点解释: 首先,为了使元素(如本图片)可拖动,把 draggable 属性设置为 true : dataTransfer.setData() 方法设置被拖数据的数据类型和值: ondragover ...
- CPU缓存一致性协议与java中的volatile关键字
有关缓存一致性协议MESI自行百度. 提出问题:volatile在缓存一致性协议上又做了哪些事情?为啥它不保证原子性? 在缓存一致性协议下,CPU为了执行效率使用了写(存储)缓存和失效队列从而导致对用 ...
- js中json对象数组按对象属性排序
在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据json中某一项进行数组的排序. 例如返回的数据结构大概是这样: { result:[ {id:,name:'中国银 ...
- angular2自学笔记(三)---ng2选项卡
学习了这些概念就能简单的描述一个选项功能的选项卡按钮: 数据:1.数组:实例化一个数组的类,如果想要使用这个类中的数据,需要在组件中 使用一个公共属性来暴漏这个类如 heroes=HEROES;con ...
- IOS使用Auto Layout中的VFL适配
做登录页面,之前做都是用frame做,今天想着用Auto Layout中的VFL来做.觉得做的效果还是可以的(自恋一下下). 首先看下效果图和标记图 自己在做的过程中也遇到了好多问题,不过也一个一个的 ...
- Java - 接口还是抽象类
Java有两种机制可以为某个抽象提供多种实现——Interface和abstract class. Interface 和 abstract class, 除了比较明显的区别(也就是能否提供基本实现) ...
- 解决MyEclipse代码编辑器中汉字太小的问题
1.问题描述: 新安装的myeclipse 2014,代码编辑器中汉字很小看不清,如下图所示: 2.解决办法: 调整字体即可.通过菜单Windows——Preferences,输入font过滤选择Co ...
- JQuery 更改属性 JQ对象循环 each 全选反选 三元运算
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C++学习笔记(7)----类的数组中构造函数和析构函数的调用顺序
C++类的数组中构造函数和析构函数的调用顺序(2) 对于如下的代码: #include<iostream> using namespace std; class CBase { priva ...