题解 | #最大公约数#
最大公约数
http://www.nowcoder.com/practice/cf4091ca75ca47958182dae85369c82c
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 求出a、b的最大公约数。 * @param a int * @param b int * @return int */ int gcd(int a, int b ) { int c; while(1) { c=a%b; if(c==0) { return b; break; } a=b; b=c; } } /**与学校最大的不同是没有scanf这些输入输出函数,取而代之是return; 这道题先看了一下解析,发现是欧几里得算法即辗转相除法,这不禁让我想起一句话“数学是万物的基础”,仔细看了看,数学上证解的步骤很复杂,难怪计算机算法陷入停滞,但是由于计算能力的提高,古今很多问题需要暴力解开,比如让欧拉“栽”了猜想,即a的n次方等于b的n次方加上c的n次方,所有的符合数均为质数。 这里主要是while(1),原因是我们不关心循环几次,再者是判断是前于数值替换,比较满意这个算法,缺点未知。