算法初步学习一 欧几里德算法(最大公约数)
小弟初学算法,总结以下自己的心得,如有不对的地方请大家见谅,正所谓一切都是由易入难,所以我也从简单算法入手,请大家不要见笑。学习简单的算法不需要太多的额外知识,但是学习高级算法时,离散数学和概率论时学习算法的前提条件,如果这两个不太好的话,就赶紧学习相应的知识吧。啊哈哈
计算机系统的各种软件,都是由大大小小的各种软件组成部分构成,各自按照特定的算法来实现,算法的好坏直接决定了软件的性能的优劣。用什么方法来设计算法、算法需要什么样的资源、以及算法的运行时间、存储空间、判断算法的好坏,在实现一个软件时这些问题都需要面对的。
下面说一下我的第一个正式学习的算法,求两个数的最大公约数
最大公约数定义:如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。
了解了最大公约数的定义,知道了目的是求两个数的最大公约数那么我们就把它转化为程序语言
1 public int Euclid(int a, int b) 2 { 3 int r=0; 4 do 5 { 6 r = a % b; 7 a = b; 8 b = r; 9 } 10 while (r!=0); 11 12 return a; 13 }
在算法的第6行把a除以b的余数赋值给r,第7行把b赋值给a,第8行把r赋值给b,第10行判断r是否为0,不为0转入循环,为0则进行返回,按照以上规则如果给定任意两个正整数,都能得到它的最大公约数则证明是正确的。
学习总结:数学中的算法转入程序,可以抓住定义中的关键字,以上算法抓住了整出这个关键字,也就是程序中的取模,模为整数时自然是公约数了,而第一个肯定为最大的那个公约数。我是一个菜鸟,所说之处如果不对,请大家见谅并给予指正。谢谢大家的支持。
浙公网安备 33010602011771号