收藏 分享(赏)

数论(一).ppt

上传人:天天快乐 文档编号:568661 上传时间:2018-04-11 格式:PPT 页数:50 大小:254KB
下载 相关 举报
数论(一).ppt_第1页
第1页 / 共50页
数论(一).ppt_第2页
第2页 / 共50页
数论(一).ppt_第3页
第3页 / 共50页
数论(一).ppt_第4页
第4页 / 共50页
数论(一).ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、算法艺术与信息学竞赛标准课件,数论(一): 概念与应用刘汝佳,目录,一、基本概念二、进位制三、模算术与方程四、杂题,一、基本概念,概念1: 整除关系,整除与约数、倍数. 注意负数可整除性的基本性质若a|b, a|c, 则a|(b+c)若a|b, 那么对所有整数c, a|bc若a|b, b|c, 则a|c整除关系具有传递性. 它是偏序关系(partial order), 是一个格,概念2: 素数和合数,如果大于1的正整数p仅有的正因子是1和p, 则称p为素数(prime)大于1又不是素数的正整数称为合数(compound)如果n是合数, 则n必有一个小于或等于n1/2的素因子,定理1: 算术基本

2、定理,每个正整数都可以惟一地表示成素数的乘积,其中素数因子从小到大依次出现(这里的“乘积”可以有0个、1个或多个素因子)。换句话说, 任意正整数n可以写成n=2a1*3a2*5a3*,其中a1,a2,a3等为非负整数这个定理也叫做惟一分解定理。它是一个定理而不是公理!虽然在大多人看来,它是“显然成立”的,但它的确是需要证明的定理,概念3: 除法和同余,令a为整数,d为正整数,那么有惟一的整数q和r,其中0rd,使得a=dq+r可以用这个定理来定义除法:d叫除数,a叫被除数,q叫商,r叫余数。如果两个数a,b除以一个数c的余数相等,说a和b关于模c同余,记作ab(mod c),概念4: 最大公约

3、数和最小公倍数,令a和b是不全为0的两个整数,能使d|a和d|b的最大整数称为a和b的最大公约数,用gcd(a,b)表示,或者记为(a,b)。令a和b是不全为0的两个整数,能使a|d和b|d的最小整数称为a和b的最小公倍数,用lcm(a,b)表示,或者记为a,b想一想: 为什么不定义最小公约数和最大公倍数?,最大公约数的性质,GCD: Greatest Common Divisor把a, b写成素数分解式则(a,b)的公式为,最大公约数的性质,知道了最大公约数a, b,经常把a和b写为a=a1*(a,b), b=b1*(a,b),则(a1,b1)=1,称a1和b1互素(relatively p

4、rime)GCD满足分配律(ma,mb)=m(a,b)结合律(a,b,c)=(a,b),c)=(a,(b,c)幂等律(a,a)=a交换律(a,b)=(b,a)吸收律a,(a,b)=a,最大公约数的性质,随机的两个整数互素的概率为其中 为黎曼Zeta函数Polezzi, 1997(m,n)为从(0,0)到(m,n)的线段(不包含(m,n))上格点的个数Knuth,定理2: gcd(a,b)*lcm(a,b)=a*b,使用惟一分解定理. 设则有:容易验证定理成立,例题:除法表达式,除法表达式有如下的形式:X1 / X2 / X3 / / Xk其中Xi是正整数且Xi109 (k10,000)。除法表

5、达式应当按照从左到右的顺序求和,例如表达式1/2/1/2的值为1/4。可以在表达式中嵌入括号以改变计算顺序,例如表达式(1 / 2) / (1 / 2)的值为1。现在给一个除法表达式E要求告诉是否可以通过增加括号使表达式值为整数。,分析,X2必须在分母, 其他都可以在分子最后结果是整数吗?方法一: 把X2分解因数方法二: 每次约掉X2和Xi的最大公约数因数分解是困难的,因此方法二优,例题:无限赛跑,AB总长度为L车一从A出发,速度为u车二从B出发,速度为v走到端点立刻返回,无时间损失开车总时间tu, v, t都是正整数相遇多少次?,分析,第一种相遇: 相向t(u+v)=(2k+1)L 第二种相

6、遇: 同向t|uv|=(2k+1)L 重复: 在端点相遇第一次同时到达端点时刻为r到达不同端点?到达同一端点A和B分别运动2k1L和(2k2+1)L 下一次到达哪里?不同端点?又同时到达此端点?同时到达另一端点?t=(2k+1)r,分析,如何求r?r是L/u的整数倍(u*r = k1L)r是L/v的整数倍r是L/gcd(u,v)的整数倍u/gcd(u,v) * r/(L/gcd(u,v) = k1r是满足条件的最小正数r=L/gcd(u,v),思考:反素数,正整数n是一个反素数,如果这个数的约数个数超过比n小的任何数的约数个数。给定n(=2*109),求不超过n的最大反素数数m,二、进位制,例

7、题:集装箱,用若干个盒子(盒子的高度为2的非负整数次幂)填满若干个集装箱(高度也是2的非负整数次幂),所有盒子的价值和最小盒子和集装箱的底面全等,因此只需要考虑高度,分析,对于每个尺寸的盒子,按照价值从小到大排序填充a个尺寸为0的集装箱时只能用尺寸为0的盒子,取最小的a个,剩下的两两组合供填充尺寸为1的集装箱时使用当需要填充a个尺寸为k的集装箱时,选择尺寸为k的盒子中价值最小的a的,然后把剩下的两两组合成尺寸为k+1的供下一次选用时间复杂度:O(n),例题:反转,TOM有9个寄存器a1.a9,支持以下操作S i j, ajai+1 (i可能等于 j)P i, 输出ai任务: 对于给定n=255

8、,设计各个寄存器的初值和一个TOM程序,按顺序输出 n, n-1, n-2, 0最长的“连续S操作”片段长度P应尽量小,算法一,寄存器i(i=8)负责输出最右的非零位为第i位的数初始时设置每个寄存器为此类数的最大值,寄存器1-8依次为128, 192, 224, 240, 248, 252, 254, 255,寄存器9保持0输出248(11111000)后,应准备232(11101000)设置连续S操作个数的限制P,每次准备好一个数后如果P限制还未达到,应该继续准备后面的数,而不要急着输出对于n=255,P限制不大于4,算法二,基本思想:刚执行输出指令的寄存器马上改考虑4个寄存器的情形,下划线

9、是输出值N, N-2, N-5, N-9N-1, N-2, N-5, N-9N-4, N-2, N-5, N-9N-4, N-3, N-5, N-9N-4, N-8, N-5, N-9N-7, N-8, N-5, N-9N-7, N-8, N-6, N-9推广到9的寄存器,对于N1,考虑这个0所在的两个2之间的区间,如果剩下的都是1(没有0),那么把区间最左边的2进位1,那么1-0,向前一位进1,如果前一位变成2,注意前一位的前面的区间是否全部都是1,如果那样也要和1)一样修改; 如果前一位原来就是2,那么跳转3)2,那么2-1,再将其前面一位加1即可,思考:天平,有一些砝码, 重量为1, 3

10、, 9, 27, 81形如3k, 每个重量砝码只有一个. 任意给一个重量为m的物体, 把它放在天平左边, 如何把放置砝码使得天平平衡? 放在左边或者右边都可m=10100,思考:987654321问题,求有多少个n位数平方以后的末9位为987654321。,思考:奇妙的数,给定n, m,寻找m位n进制数A,使得2A,3A,mA的数字均为A数字的排列如m=6, n=10时,142,857是唯一解给定数据最多只有一组解,也可能无解(如m=6, n=100时),三、模算术与方程,欧拉定理,欧拉函数: 1n中和n互素的元素个数(n)Euler定理 若gcd(a, n)=1则a(n) 1 (mod n)

11、意义:当b很大时ab ab mod (n)(mod n),让指数一直比较小欧拉函数是积性函数,即当(m,n)=1时f(mn)=f(m)*f(n),思考:欧拉函数的计算,给定n,需要多少时间计算(n)?给定n,需要多少时间计算(1), (2), , (n)的所有值?,例题:模取幂,a, p, m, n均为正整数,a, p为素数1a, p, m, n65535,且n2a, n2p。求:如a=32719, p=54323, m=99, n=65399,则结果为46184,例题:模取幂,记f(a,p,m,n)为本题所求的数,n=1时,任何数模n都是0,所以f(a,p,m,n)=0,否则a=1时,a的任

12、何次幂都是1,结果为1 mod n;否则m=0时,结果为=a mod n;否则n=a时,a的次幂永远是n的倍数,结果为0;否则n=2a时,因为a, p 2,如果a中有2的因子,则a的次幂永远是n的倍数,结果为0,否则为a;否则a, n互素,f(a,p,m,n)=af(p,p,m-1,(n) mod n,问题转变成求ak mod n,可以二分求解,例题:整数序列,已知A1,An、B、P求X1,Xn使得A1X1+AnXn = B(mod P),分析,设g=(A1,A2,An,P),若g不整除B则无解,否则我们可以用递归构造解:将A1,An、P和B全部除以g,此时(A1,An),P)=1,若n=1,

13、则直接求X1使得A1X1 mod P=B;否则设(A1,An-1)=D,则根据欧几里德算法一定存在x和y使得ANx + Dy = B(mod p),可以令Xn=x , 则A1X1+An-1Xn-1=B-AnX=Dy(mod p),分析,(A1,An-1)=D, 所以(A1,An-1,P) = (D,P) | (Dy mod P), 因此完全转化为n-1的情形, 令B=DY mod P即可,四、杂题,例题:Fermat vs Pythagoras,给N(=100,000),考虑满足x2+y2=z2(xyz=N)的三元组求x、y、z互质的三元组的个数和不属于任何三元组(不光是互质)的k(k=N)的

14、个数.例(输入:输出)10: 1 4 25: 4 9 100: 16 27,分析,本原三元组一定可以写成x=uv, y=u2-v2, z=u2+v2, 其中u, v互质其他是本原三元组的整数倍算法预处理, 保存100,000内的所有本原三元组, 以z为关键字排序, di为z=i的个数, 递推标记它们的倍数涉及到的数, 按序递推不属于任意三元组的个数gi回答询问是O(1)的, 空间O(n),例题:没有矩形,n*n的网格, 要求每行每列恰好k个黑点,但任意四个黑点不构成边与坐标轴平行的矩形输入k, 求n=k2-k+1的一个解k=32且k-1为0, 1或素数,分析,每行用k个数表示黑色点的列编号,

15、则不存在矩形当且仅当任两行最多一个相同数构造法.第1行涂点1, 2, 3k以下分k个块, 每块有k-1行, 共k2-k+1行第i个块的第一个点均为i第一个块的其他点为k+1k2-k+1其他每个块的各行为第1个块的一个平移覆盖以k=6为例, 第1行和第1个块(共6行)为:,1 2 3 4 5 61 7 8 9 10 111 12 13 14 15 161 17 18 19 20 211 22 23 24 25 261 27 28 29 30 31以k=6为例第一行为1k, 即16每个块有k-1行, 即5行第i个块的第一个数均为i第1个块的其他点为k+1k2-k+1即731下面开始一行一行构造第2

16、个块,1 2 3 4 5 61 7 8 9 10 111 12 13 14 15 161 17 18 19 20 211 22 23 24 25 261 27 28 29 30 312 7 14 21 23 30第1个数总是2第2从第1个块复制来一个7以后每次从第1个块的下一行复制, 源的列号往右偏移2,1 2 3 4 5 61 7 8 9 10 111 12 13 14 15 161 17 18 19 20 211 22 23 24 25 261 27 28 29 30 312 7 14 21 23 302 8 15 17 24 31第1个数还是2这次从8开始复制相当于选取的数是上一行右移了

17、一个单位(比较黑色和兰色部分)相当于用平移法构造k个链, 覆盖块1的其他数,1 2 3 4 5 61 7 8 9 10 111 12 13 14 15 161 17 18 19 20 211 22 23 24 25 261 27 28 29 30 312 7 14 21 23 302 8 15 17 24 312 9 16 18 25 272 10 12 19 26 282 11 13 20 22 293 7 15 18 26 29第3块还是若干平移链, 但间隔变为3,1 2 3 4 5 61 7 8 9 10 111 12 13 14 15 161 17 18 19 20 211 22 23

18、 24 25 261 27 28 29 30 312 7 14 21 23 302 8 15 17 24 312 9 16 18 25 272 10 12 19 26 282 11 13 20 22 293 7 15 18 26 293 8 16 19 22 30,证明,先证合法性. 每行显然k个元素, 下面证明每列i也是k个元素ik: i在第1个块中恰好出现过一次, 其他每块也恰好出现一次(每一块的各行是第一块的一个分解!),因此一共恰好出现k次下面证明没有矩形,证明,没有矩形当且仅当任意两行最多只有一个相同的数. 考虑每两行i, j, 规定ij若i=1, j只有第1个数字出现在第一行若i和j在同一个块内, 则只有第1个数相同若i和j属于不同的两块, 则第1个数不同, 其他数来自两个间隔不同的链. 因为k-1是素数或0, 1, 所以此二链不可能有两个公共元素,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报