- 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;
您可能关注的文档
最近下载
- 2025年湖南科技职业学院单招英语模拟试题(附答案解析).pdf VIP
- 2025年高考数学重点题型归纳精讲精练5.4三角形四心和奔驰定理(新高考地区)(原卷版) .docx VIP
- 新生儿窒息复苏试卷附有答案.docx
- 三 气体压强.ppt VIP
- 图解---“健康中国2030”规划纲要-医学课件.pptx
- 历史:第6课《中古时代的欧洲》课件 (川教版九年级上).ppt
- DeepSeek-清华大学104页《DeepSeek:从入门到精通》.pptx
- FANUC 0i-MB操作说明书 完整版.pdf
- (八省联考)2025年新高考适应性演练 政治试卷合集(含答详解案).docx
- 赤泥坝施工方案.doc
文档评论(0)