信息学之数学基础.doc
《信息学之数学基础.doc》由会员分享,可在线阅读,更多相关《信息学之数学基础.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、|第一章 有关数论的算法1.1 最大公约数与最小公倍数1.2 有关素数的算法1.3 方程 ax+by=c 的整数解及应用1.4 求 ab mod n1.1 最大公约数与最小公倍数 1.算法 1: 欧几里德算法求 a,b 的最大公约数 function gcd(a,b:longint):longint;beginif b=0 then gcdd:=aelse gcd:=gcd(b,a mod b);end;2.算法 2:最小公倍数 acm=a*b div gcd(a,b);3.算法 3:扩展的欧几里德算法,求出 gcd(a,b)和满足 gcd(a,b)=ax+by 的整数 x 和 y funct
2、ion exgcd(a,b:longint;var x,y:longint):longint;vart:longint;beginif b=0 then beginresult:=a;x:=1;y:=0;endelsebeginresult:=exgcd(b,a mod b,x,y);t:=x;x:=y;y:=t-(a div b)*y;end;end;(理论依据:gcd(a,b)=ax+by=bx1+(a mod b)y1=bx1+(a-(a div b)*b)y1=ay1+b(x1-(a div b)*y1)1. 2 有关素数的算法1.算法 4:求前 n 个素数:program Basic
3、Math_Prime;constmaxn=1000;varpnum,n:longint; p:array1.maxn of longint;|function IsPrime(x:longint):boolean;var i:integer;beginfor i:=1 to pnum doif sqr(pi)0 thenbeginwrite(ai:5); k:=k+1;if k mod 10 =0 then writeln;endend.3.算法 6:将整数分解质因数的积program BasicMath_PolynomialFactors;constmaxp=1000;varpnum,n:l
4、ongint;num,p:array1.maxp of longint;procedure main;var x:longint;|beginfillchar(num,sizeof(num),0);fillchar(p,sizeof(p),0);pnum:=0;x:=1;while(n1) dobegininc(x);if n mod x=0 thenbegininc(pnum);ppnum:=x;while(n mod x=0) dobeginn:=n div x;inc(numpnum);end;end;end;end;procedure out;var j,i:integer;begin
5、for i:=1 to pnum dofor j:=1 to numi dowrite(pi:5);writeln;end;beginmain;out;end.1.3 方程 ax+by=c 的整数解及应用 1.算法 7:求方程 ax+by=c 的整数解 procedure equation(a,b,c:longint;var x0,y0:longint);var d,x,y:longint;begind:=exgcd(a,b,x,y);if c mod d0 thenbeginwriteln(no answer);halt;end elsebegin|x0:=x*(c div d);y0:=y
6、*(c div d);end;end; 2.方程 ax+by=c 整数解的应用 例 1:有三个分别装有 a 升水、b 升水和 c 升水的量筒(gcd(a,b)1,cba0),现 c 筒装满水,问能否在 c 筒个量出 d 升水(cd0)。若能,请列出一种方案。算法分析:量水过程实际上就是倒来倒去,每次倒的时候总有如下几个持点:1.总有一个筒中的水没有变动;2不是一个筒被倒满就是另一个筒被倒光;3c 筒仅起中转作用,而本身容积除了必须足够装下 a 简和 b 简的全部水外,别无其它限制。 程序如下: program mw;typenode=array0.1 of longint;vara,b,c:n
7、ode;d,step,x,y:longint;function exgcd(a,b:longint;var x,y:longint):longint;var t:longint;beginif b=0 thenbeginexgcd:=a;x:=1;y:=0;endelsebeginexgcd:=exgcd(b,a mod b,x,y);t:=x;x:=y;y:=t-(a div b)*yend;end;procedure equation(a,b,c:longint;var x0,y0:longint);var d,x,y:longint;begind:=exgcd(a,b,x,y);if c
8、 mod d0 thenbeginwriteln(no answer);halt;end elsebegin|x0:=x*(c div d);y0:=y*(c div d);end;end;procedure fill(var a,b:node);var t:longint;beginif a10 thenrepeatif a1=0 then fill(c,a) elseif b1=b0 then fill(b,c) else fill(a,b);inc(step);writeln(step:5,:,a1:5,b1:5,c1:5);until c1=delserepeatif b1=0 the
9、n fill(c,b) elseif a1=a0 then fill(a,c) else fill(b,a);inc(step);writeln(step:5,:,a1:5,b1:5,c1:5);until c1=d;end.1.4 求 ab mod n 1.算法 8:直接叠代法求 ab mod n function f(a,b,n:longint): longint; var d,i:longint; begin |d:=a; for i:=2 to b do d:=d mod n*a; d:=d mod n; f:=d; end; 2.算法 9:加速叠代法 function f(a,b,n
10、:longint):longint; var d,t:longint; begin d:=1;t:=a; while b0 do begin if t=1 then begin f:=d;exit end ; if b mod 2 =1 then d:=d*t mod n; b:=b div 2; t:=t*t mod n; end; f:=d end; 练习: 1.熟记并默写以上算法.第三章 排列与组合3.1 加法原理与乘法原理3.2 排列与组合概念与计算公式3.3 排列与组合的产生算法3.1 加法原理与乘法原理 1.加法原理: 做一件事情,完成它可以有 n 类办法,在第一类办法中有 m1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息学 数学 基础
限制150内