欢迎来到天天文库
浏览记录
ID:57292379
大小:458.00 KB
页数:11页
时间:2020-08-10
《C++之算法设计与实现课件.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、■算法设计与实现算法设计与实现构造算法解决问题按照自顶向下、逐步求精的方式进行使用程序设计语言编程实现典型示例素性判定问题最大公约数问题■素性判定问题判断给定的某个自然数n(大于2)是否为素数算法逻辑输入:大于2的正整数n输出:该数是否为素数,若为素数返回true,否则返回false步骤1:设除数i为2步骤2:判断除数i是否已为n,若为真返回true,否则继续步骤3:判断n%i是否为0,若为0返回false,否则继续步骤4:将除数i递增,重复步骤2■素性判定函数第一版验证其为算法:对照算法五个基本特征证明算法正确测试算法boolIsPrime(uns
2、ignedintn){unsignedinti=2;while(i3、i=3;if(n%2==0)returnfalse;while(i<=(unsignedint)sqrt(n)){if(n%i==0)returnfalse;i+=2;}returntrue;}第三版有什么改进?■素性判定函数第四版boolIsPrime(unsignedintn){unsignedinti=3;if(n%2==0)returnfalse;while(i<=(unsignedint)sqrt(n)+1){if(n%i==0)returnfalse;i+=2;}returntrue;}第四版有什么改进?■素性判定函数第五版boolIsP4、rime(unsignedintn){unsignedinti=3,t=(unsignedint)sqrt(n)+1;if(n%2==0)returnfalse;while(i<=t){if(n%i==0)returnfalse;i+=2;}returntrue;}第五版有什么改进?■算法选择算法选择的权衡指标正确性:算法是否完全正确?效率:在某些场合,对程序效率的追求具有重要意义可理解性:算法是否容易理解,也是必须要考虑的算法评估:衡量算法的好坏,主要是效率■最大公约数问题求两个正整数x与y的最大公约数函数原型设计unsignedintgcd(un5、signedintx,unsignedinty);■最大公约数函数:穷举法unsignedintgcd(unsignedintx,unsignedinty){unsignedintt;t=x6、7、y%t!=0)t--;returnt;}■最大公约数函数:欧氏算法unsignedintgcd(unsignedintx,unsignedinty){unsignedintr;while(true){r=x%y;if(r==0)returny;x=y;y=r;}}输入:正整数x、y输出:最大公约数步骤1:x整除以y,记余数8、为r步骤2:若r为0,则最大公约数即为y,算法结束步骤3:否则将y作为新x,将r作为新y,重复上述步骤
3、i=3;if(n%2==0)returnfalse;while(i<=(unsignedint)sqrt(n)){if(n%i==0)returnfalse;i+=2;}returntrue;}第三版有什么改进?■素性判定函数第四版boolIsPrime(unsignedintn){unsignedinti=3;if(n%2==0)returnfalse;while(i<=(unsignedint)sqrt(n)+1){if(n%i==0)returnfalse;i+=2;}returntrue;}第四版有什么改进?■素性判定函数第五版boolIsP
4、rime(unsignedintn){unsignedinti=3,t=(unsignedint)sqrt(n)+1;if(n%2==0)returnfalse;while(i<=t){if(n%i==0)returnfalse;i+=2;}returntrue;}第五版有什么改进?■算法选择算法选择的权衡指标正确性:算法是否完全正确?效率:在某些场合,对程序效率的追求具有重要意义可理解性:算法是否容易理解,也是必须要考虑的算法评估:衡量算法的好坏,主要是效率■最大公约数问题求两个正整数x与y的最大公约数函数原型设计unsignedintgcd(un
5、signedintx,unsignedinty);■最大公约数函数:穷举法unsignedintgcd(unsignedintx,unsignedinty){unsignedintt;t=x6、7、y%t!=0)t--;returnt;}■最大公约数函数:欧氏算法unsignedintgcd(unsignedintx,unsignedinty){unsignedintr;while(true){r=x%y;if(r==0)returny;x=y;y=r;}}输入:正整数x、y输出:最大公约数步骤1:x整除以y,记余数8、为r步骤2:若r为0,则最大公约数即为y,算法结束步骤3:否则将y作为新x,将r作为新y,重复上述步骤
6、
7、y%t!=0)t--;returnt;}■最大公约数函数:欧氏算法unsignedintgcd(unsignedintx,unsignedinty){unsignedintr;while(true){r=x%y;if(r==0)returny;x=y;y=r;}}输入:正整数x、y输出:最大公约数步骤1:x整除以y,记余数
8、为r步骤2:若r为0,则最大公约数即为y,算法结束步骤3:否则将y作为新x,将r作为新y,重复上述步骤
此文档下载收益归作者所有