同余定理

数论基础原理总结

风流意气都作罢 提交于 2020-01-18 05:45:06
UPD:2018.4.25 更新了快速求原根的啰嗦的证明 一、整除的性质 1,如果a|b,且b|c,则a|c 2,a|b且b|c,那么a|c 3,设m!=0,那么a|b等价于(m*a)|(m*b) 4,设整数x和y满足下式,a*x+b*y=1,且a|n,b|n,那么(a*b)|n 根据性质3可得,(a*b)|(n*b),(a*b)|(n*a), 根据性质4可得,(a*b)|x*(n*a)+y*(n*b) 化简上式,(a*b)|n*(a*x+b*y)=>(a*b)|n*(1),证毕 5,若b=q*d+c,那么d|b的充要条件是d|c 其他 约定0可以被任何数整除 若2能整除a的最末位,则2|a 若4能整除a的后两位,则4|a 若8能整除a的后三位,则8|a.以此类推不再赘述 若3能整除a的各位数字之和,则3|a 若9能整除a的各位数字之和,则9|a 若11能整除a的偶数位数字之和与奇数位数字之和的差,则11|a 同时能被7,11,13整除的数的特征是,这个数的末三位与末三位以前的数字所组成的数能被7,11,13整除,则这个数就能被7,11,13整除 显然成立容易忽略的细节? 若a|b,则a是b的一个因子, 若a|b,则a<=b 二、GCD GCD据我的理解可以形象化的理解为,数字的最长公共子结构 所以不仅仅是两个数之间的 一堆数的GCD,显然可以先从某两个数的GCD开始

原码,补码,反码

对着背影说爱祢 提交于 2019-12-27 13:19:24
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二. 原码, 反码, 补码的基础概念和计算方法. 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数,

原码、反码、补码知识详细讲解(此作者是我找到的讲的最细最明白的一个)

筅森魡賤 提交于 2019-12-17 10:24:20
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二. 原码, 反码, 补码的基础概念和计算方法. 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数,

同余定理的定义及其性质

落花浮王杯 提交于 2019-12-14 11:10:53
一、同余定理的定义:     两个整数a,b,如果他们同时对一个自然数m求余所得的余数相同,则称a,b对于模m 同余 。记作a≡b(mod m)。读为:a同余于b模m。在这里“≡”是同余符号。 二、同余定理的一些性质: 对于同一个除数,两个数之和(或差)与它们的余数之和(或差)同余。(加减乘同理)         (a+b)%c==(a%c+b%c)%c  对于同一个除数,如果有两个整数同余,那么它们的差一定能被这个除数整除。 对于同一个除数,如果两个数同余,那么他们的乘方仍然同余。  记忆口诀:  1、“数的和差积与余的和差积同余” 2、“数与数同余,则方与方同余” 3、“同余相减得整除” 来源: https://www.cnblogs.com/xiaohajiang/p/12038203.html

浅谈欧拉定理及乘法逆元

帅比萌擦擦* 提交于 2019-12-09 20:40:10
浅谈欧拉定理及乘法逆元 本篇随笔简单讲解一下信息学奥林匹克竞赛数论部分 欧拉定理及乘法逆元 这一知识点。介绍的内容大致分为这么几个部分: “同余的基本概念、费马小定理、欧拉定理及其推论、乘法逆元” 。 同余的基本概念 同余的概念啊非常简单啦:如果两个整数 \(a,b\) 除以一个数 \(m\) 的余数相等的话,那么就叫做 \(a,b\) 在模 \(m\) 的意义上同余。 记作: \[ a\equiv b\,\,\,(mod\,\,m) \] 那么根据同余的这个定义,我们很容易能推导出一个性质:如果两个数 \(a,b\) 在模 \(m\) 的意义下同余,那么 \(a-b\) 就是 \(m\) 的倍数,这是显然的。 以及,如果 \(a\%m=1\) ,那么就可以被改写成这样的式子: \[ a\equiv 1\,\,\,(mod\,\,m) \] 这个转化的正确性也是显然的。 费马小定理 费马小定理也非常简单啦!用语言描述就是,如果一个数 \(p\) 是质数,那么对于一个不为 \(p\) 的倍数的整数 \(a\) ,有 \(a^{p-1}\equiv 1\,\,\,(mod\,\,p)\) 。那么把这个结论两边同时乘上一个 \(a\) ,即可得出:对于任意的整数 \(a\) , \(a\) 的 \(p\) 次幂与 \(a\) 在模 \(p\) 的意义上同余。 即: \[ a^p

[题解](同余)POJ_3696_The Luckiest Number

拟墨画扇 提交于 2019-12-04 16:05:19
还是挺难的吧......勉强看懂调了半天 首先表达式可以写成 8(10^x -1)/9,题意为求一个最小的x使L | 8(10^x -1)/9 设d=gcd(L,8) L | 8(10^x -1)/9 <=>9L | 8(10^x -1) <=>9L/d | 10^x -1 (因为 9L/d 和 8/d 互质了 所以 9L/d 能整除(8/d)*(10^x-1)和 8/d 无关,所以可以去掉) <=>10^x 同余 1(mod 9L/d) 引理: 若a,n互质,则满足10^x同余1(mod n)的最小正整数x0是phi(n)的约数 反证法: 假设满足a^x 同余 1(mod n)的最小正整数x0不能整除phi(n) 设phi(n)=q*x0+r(0<r<x0),因为a^x0 同余1(mod n),所以a^(q*x0)同余1(mod n) 根据欧拉定理a^phi(n)同余1(mod n),所以a^r同余1(mod n),与x0最小矛盾 无解的时候就是q与10不互质的时候,因为若q与10有公因子d: 1.若d=2,q=2*k,那么10^x=2^x*5^x=1%2k 即2^x*5^x=1+2k*m,左边为偶数,右边为奇数,显然矛盾。 2.若d=5,q=5*k,那么10^x=2^x*5^x=1%5k 即2^x*5^x=1+5k*m,左边是5的倍数,右边不是5的倍数,显然矛盾。 注意

原码、反码、补码详解

余生颓废 提交于 2019-12-04 04:52:18
一、机器数和真值   1、机器数     一个数在计算机中的二进制表示形式, 叫做这个数的 机器数 。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.     比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。     那么,这里的 00000011 和 10000011 就是机器数。   2、真值     因为第一位是符号位,所以机器数的形式值就不等于真正的数值。     例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3, 而不是形式值131(10000011转换成十进制等于131)。     所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1    二、原码,反码,补码的基础概念和计算方法    对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式。   1、原码      原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。     例如:一个8位二进制 [+1]原 = 0000 0001 [-1]原 = 1000 0001      

原码, 反码, 补码 详解

早过忘川 提交于 2019-12-03 05:15:23
本文转载自 http://www.cnblogs.com/zhangziqiu/ , 作者 张子秋 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二. 原码, 反码, 补码的基础概念和计算方法. 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值,

【线性同余方程】青蛙的约会

匿名 (未验证) 提交于 2019-12-02 23:05:13
模运算:   取模:计算除以m的余数,叫做对m取模   同余:将a,b对m取模的结果相同,记为 ( m o d m ) ( m o d m ( m o d m ),则有 ( m o d m ( m o d m ) 线性同余方程:   a,b是整数,形如 ax ≡ b (mod n),且x是未知整数的同余式称为 一元线性同余方程。   定理:同余方程 ax ≡ b (mod n) 对于未知数 x 有解,当且仅当 b 是 gcd(a,n)的倍数。否则方程无解。且方程有解时,方程有 gcd(a,n)个解。   这里根据取余的概念可以得出,假如 a%n = b 的话,可以写出一个等式 a = n*t +b;    求解线性同余方程的方法:这里根据上面很容易得出下面两个等式:     ax = n*y 1     b = n*y 2 + 余数   上面两式相减得 ax - b = n(y 1 -y 2   那么根据这个等式采用 扩展欧几里得算法 就能够得出 x 的值。也就解出了线性同余方程。 例题:青蛙的约会       思路: 因为线总长L,青蛙需要循环跳才有可能碰面。而循环跳的话那么它们的位置只能通过对L取余得到。根据题意,假设它们需要跳k次才能碰面,那么很容易得出这个同余组 ( m o d L )。 而 根据上面的讲解 我们也可以得到下面两个等式: 1     y + k*n = L

原码, 反码, 补码 详解

杀马特。学长 韩版系。学妹 提交于 2019-12-02 02:36:52
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 二. 原码, 反码, 补码的基础概念和计算方法. 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数,