数论算法--ACM.ppt

上传人:99****p 文档编号:1518658 上传时间:2019-03-04 格式:PPT 页数:17 大小:226KB
下载 相关 举报
数论算法--ACM.ppt_第1页
第1页 / 共17页
数论算法--ACM.ppt_第2页
第2页 / 共17页
数论算法--ACM.ppt_第3页
第3页 / 共17页
数论算法--ACM.ppt_第4页
第4页 / 共17页
数论算法--ACM.ppt_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、国际大学生程序设计竞赛数论与算法主讲:王树林数论基本知识 信息学中应用的关于素数和整除的知识并不多,关键在于灵活应用。 素数和整除问题 如果 a和 b是整数, a0,若有整数 c使 b ac,就说 a整除 b。在 a整除 b时,记 a是 b的一个因子, b是 a的倍数。用符号 ab表示 a整除 b, a不能整除b记为 a b。 整除基本性质有: ( 1)若 ab, ac,则 a( b c) ( 2)若 ab,则对所有整数 c, abc ( 3)若 ab, bc,则 ac (传递性) 自反,反对称,传递性,偏序关系。 是一个格。 素数( prime)和合数( compound),如果一个整数 p

2、只有 1和 p两个因子,则 p为素数,不为素数的其它数为合数。如果 n为合数,则 n必有一个小于或等于 n的平方根的数因子。 算术基本定理:每个正整数都可以唯一地表示成素数的乘积。其中素数因子从小到大依次出现。数论基本知识 除法的定义和同余 a dq r。 同余: ab(mod c) 最大公约数 gcd(a,b) 最小公倍数 lcm(a,b) ab gcd(a,b)lcm(a,b) 如果 gcd(a,b)=1,则 a与 b互素。数论基本知识 1。如何求出 1 n中的所有素数? Eraosthenes氏筛法:每次求出一个新的素数,就把 n以内的它的所有倍数都筛去。 2。给出一个数 n,如何判断它

3、是不是素数? 1)朴素的判别法 从 2开始试除小于 n的所有自然数,时间复杂度为O(n). 2) 如果 a是 n的因子,那么 n/a也是 n的因子,所以如果 n有一个大于 1的真因子,则它必有一个不大于 n1/2的因子,时间复杂度 O(n1/2)。 等等。这些方法太慢。 伪素数:如果 n是一个正整数,并且存在和 n互素的正整数 a满足 an-1 1(mod n), 我们说 n是基于 a的伪素数。如果一个数是伪素数,它几乎肯定是素数。另一方面,如果一个数不是伪素数,它一定不是素数。数论基本知识 Miller-Rabbin测试function Miller-Rabbin(n:longint):bo

4、olean; begin for i:=1 to s do Begin a:=random(n-2)+2; If modular_exp(a,n-1,n)1 then return false; end; End; return true; End; 这是一个概率型算法,属于 Monte-Carlo算法系列。 时间复杂度为 O( slog3n)。最大公约数的求法 欧几里德辗转相除法 function gcd(a,b:longint):longint; Begin if b=0 then gcd:=a; else gcd:=gcd(b, a mod b); End;扩展的欧几里德算法 如果( a

5、, b) d,那么一定存在 x, y满足 ax by d。 Function extended_gcd(a,b:longint; Var x,y:longint):longint; Begin if b=0 then begin extended_gcd:=a; x:=1; y:=0; end else begin extended_gcd:=extended_gcd(b, a mod b); t:=x; x:=y; y:=t-(a div b) * y; end; End;佳佳的困惑 题目:给出一个数 N,含数字 1, 2, 3, 4,把 N的所有数字重新排列一下组成一个新数,使它是 7的倍

6、数。 分析:把数字 1, 2, 3, 4从中抽出,然后把其他数字按照原顺序排列组成的自然数 w, w10000整除 7取余有 7种可能,即是 0, 1, 2, 3, 4, 5, 6。如果能把 1, 2, 3, 4排列出 7个数,使它们整除 7取余的值分别为 0, 1, 2, 3, 4, 5, 6,把这 4位数接在 w后面即为问题的解。除法表达式 题目:除法表达式有如下的形式: X1/X2/X3/ Xk.其中 Xi是正整数且 X1000 000 000( 1ik, k10 000)。除法表达式应当按照从左到右的顺序计算。可以在表达式中嵌入顺序。现在给一个除法表达式 E要求告诉是否可以通过增加括号使表达式为 E, E是整数。 分析: 显然 X1为分子, X2比为分母,其它数可以为分子也可以为分母。 方法一:将分母 X2分解质因数,由于X21000000000,所以质因数个数不超过 29个。逐一扫描 X1, X3, X4 , Xk,看能否将X2约掉。 方法二:还是逐一扫描 X1, X3, X4 , Xk,看能否将 X2约掉,但不进行因数分解,而是每次约掉它和 X2的最大公约数。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。