- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息学之数学基
第一章 有关数论的算法
HYPERLINK file:///C:\\Documents%20and%20Settings\\Administrator\\Local%20Settings\\Temp\\40.htm \l p22#p22 1.1 最大公约数与最小公倍数 HYPERLINK file:///C:\\Documents%20and%20Settings\\Administrator\\Local%20Settings\\Temp\\40.htm \l p#p 1.2 有关素数的算法 HYPERLINK file:///C:\\Documents%20and%20Settings\\Administrator\\Local%20Settings\\Temp\\40.htm \l p24#p24 1.3 方程ax+by=c的整数解及应用
HYPERLINK file:///C:\\Documents%20and%20Settings\\Administrator\\Local%20Settings\\Temp\\40.htm \l p25#p25 1.4 求a^b mod n
1.1最大公约数与最小公倍数
1.算法1: 欧几里德算法求a,b的最大公约数?function gcd(a,b:longint):longint;?begin?if b=0 then gcdd:=a?else 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?function exgcd(a,b:longint;var x,y:longint):longint;vart:longint;beginif b=0 then??begin? result:=a;? x:=1;? y:=0;?endelse?begin?result:=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 BasicMath_Prime;constmaxn=1000;varpnum,n:longint;?p:array[1..maxn] of longint;function IsPrime(x:longint):boolean;var i:integer;beginfor i:=1 to pnum do?if sqr(p[i])=x then? begin?? if x mod p[i]=0 then???? begin????? IsPrime:=false;?????? exit;???? end;?end?
?else? begin?? IsPrime:=true;?? exit;?end;IsPrime:=true;end;procedure main;var x:longint;beginpnum:=0;x:=1;while(pnumn) dobegin?inc(x);?if IsPrime(x) then? begin?? inc(pnum);?? p[pnum]:=x;? end;end;
end;procedure out;var i,t:integer;beginfor i:=1 to n do?begin
?write(p[i]:5);t:=t+1;
?if t mod 10=0 then writeln;
?end;end;beginreadln(n);
main;out;end.
2.算法5:求不大于n的所有素数
program sushu3;const maxn=10000;vari,k,n:integer;a:array[1..maxn] of integer;beginreadln(n);for i:=1 to n do a[i]:=i;a[1]:=0;i:=2;while in dobegin?k:=2*i;?while k=n do? begin? a[k]:=0;? k:=k+i;? end;?i:=i+1;?while (a[i]=0) and (in) do i:=i+1;end;
您可能关注的文档
- 住院医师规范化培训血气胸教学查.ppt
- 住院医师规范化培训教学查.ppt
- 住宅立面风格汇.pptx
- 住宅精装修案.ppt
- 住院医师规范化培训入科教.pptx
- 体卫艺职.doc
- 体位摆放、体位转移技术--.ppt
- 体位引.ppt
- 体外抗原抗体反应概.ppt
- 体外循环护理(讲.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)