ACM_数论——南开大学.ppt_第1页
ACM_数论——南开大学.ppt_第2页
ACM_数论——南开大学.ppt_第3页
ACM_数论——南开大学.ppt_第4页
ACM_数论——南开大学.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Butterfly0923Doraemonokjackfeng 2008年南开大学ACM协会暑期集训数论 二分法in乘方 如何计算a n 1 计算a a a a a a 需要计算n 1次乘法 时间复杂度O n 2 考虑实例a 4 计算b a a 再算c b b 则c a 4 但是只用了两次乘法 效率提高 比如a 9 a a 4 a 4 只需用4次乘法 一般的 a n时间复杂度为O logn 二分法in乘方 第二种算法与二进制的关系9 1001 2 a 9 a 8 a 10 1010 2 a 10 a 8 a 2 从二进制最后一位开始 如果第k位是1 就乘以a 2 k 1 计算每个a 2 k 需要logn 得到答案最多需要乘logn次 所以复杂度是O logn 如果把a看作矩阵 上面方法可应用于矩阵乘方 注 这并不是最快的办法 有兴趣的同学可以做一下poj3134 求素数方法 1 p N 存储所有的素数 二重循环 用已经求出的不大于平方根的所有素数试除for i 2 i n i for j 0 j m 素数 2 增加布尔型数组b N 记录是否为素数 初始化所有值 1 从头开始遍历 如果b i 1 则i是素数 将所有的i的倍数j均修改为b j 0for i 2 i n i 如果b i 1则添加到素数列表p 然后利用循环for j i j n j i b j 0将i的所有倍数删掉思考 试比较两种方法效率 大数的素性检测 Rabin Miller素数测试非素数通过测试概率为 Pollard 算法大数的快速分解 这两种算法在此不予以介绍 有兴趣的同学可以到google上搜索或参看相关书籍 改进乘方算法应用于fibonacci 普通的算法求Fn的时间复杂度为O n 当然如果要求求出所有的Fn 这种已经是最优的了 但是如果只求某一个Fn 可以改进 GCD GreatCommonDivisor Euclid算法intgcd inta intb intmod while mod a b a b b mod returnb 注意这里面必须a b都为正数 否则要加其他判断语句Extended Euclid算法 同时求出v u使gcd a b u a v b 重要 非递归的不好写 建议写递归的 扩展欧几里得算法 注意到对于gcd a b d我们对 a b 用欧几里德辗转相除会最终得到 d 0 此时对于把a d b 0带入a x b y d 显然x 1 y可以为任意值 这里y可以为任意值就意味着解会有无数个 我们可以用a d b 0的情况逆推出来任何gcd a b d满足a x b y d的解 如果x0 y0是b x a b y d的解 那么对于a x b y d的解呢 扩展欧几里得算法 b x a b y d b x a a b b y a y b x a b y 所以a x b y d的解x1 y0 y1 x0 a b y0 这样我们可以程序迭代了 注 a b为正整数 设集合A x a y b x y是整数 则A中最小正元素是gcd a b 费马小定理及其推广 若p为素数 gcd a p 1则a p 1 1 modp 推广 若gcd a n 1则a f a 1 modn 其中f a 为a的欧拉函数 这里注意到 如果n为素数 则由于n的欧拉函数 n 1 可以推出费马小定理 Extended Euclid算法 扩展欧几里德算法 EXTENDED EUCLID a b ifb 0thenreturn a 1 0 d x y EXTENDED EUCLID b a b d x y d y x a b y return d x y 13 求解模线性方程 定理 方程ax b modn 对于未知量x有解 当且仅当gcd a n b定理 方程ax b modn 或者对模n有d个不同的解 其中d gcd a n 或者无解 14 求解模线性方程 定理 设d gcd a n 假定对整数x 和y 有d ax ny 如果d b 则方程ax b modn 有一个解的值为x0 满足x0 x b d modn 15 求解模线性方程 定理 假设方程ax b modn 有解 即有d b 其中d gcd a n x0是该方程的任意一个解 则该方程对模n恰有d个不同的解 分别为 xi x0 i n d i 1 2 d 1 16 求解模线性方程 MODULAR LINEAR EQUATION SOLVER a b n d x y EXTENDED EUCLID a n if d b thenx0 x b d modnfori 0tod 1doprint x0 i n d modnelseprint nosolution 求解模线性方程组中国剩余定理的内容如下 令n n1n2 nk 其中ni是两两互质的数 则对0 a n与0 ai ni且a aimodni首先定义mi n ni i 1 2 k 则mi是除了ni以外的所有nj的乘积 由于GCD mi ni 1 所以用扩展Euclid算法得ci满足bini cimi 1a a1c1m1 a2c2m2 akckmk modn LCM LeastCommonMultiple 有了GCD LCM就好办了 LCM a b a b GCD a b 实际上最好写成a GCD a b b思考 为什么下面的写法好 其他一些关于约数的公式 若n p1e1p2e2 prer 则n的因数个数为 1 e1 1 e2 1 er n所有因数的和为 1 p1 p12 p1e1 1 p2 p22 p2e2 1 pr pr2 prer n n p1 n1 p2 n2 pk nk勒让德定理 ni n pi n pi 2 n pi 3 其中 表示向下取整 欧拉函数 x 表示与x互质且小于x的正整数的个数如果x为素数 则欧拉函数等于x 1求法 将x分解为p1 n1 p2 n2 pk nk 则欧拉函数 p1 n1 1 pk nk 1 p1 1 pk 1 Exercise NKOJ 1053 哥德巴赫猜想1236 a b1430 Fibon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论