最大公约数

题目:求出两个数的最大公约数,如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数

思路:

代码:

1. 辗转相除法(欧几里德算法)

 1 /**
 2  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 3  *
 4  * 求出a、b的最大公约数。
 5  * @param a int 
 6  * @param b int 
 7  * @return int
 8  */
 9 function gcd( a ,  b ) {
10     // write code here
11     if(a%b ===0) return b;
12     return gcd(b, a%b);
13 }
14 module.exports = {
15     gcd : gcd
16 };

2. 

 1 /**
 2  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 3  *
 4  * 求出a、b的最大公约数。
 5  * @param a int 
 6  * @param b int 
 7  * @return int
 8  */
 9 function gcd( a ,  b ) {
10     // write code here
11     var temp;
12     while(b!=0){
13         temp = a%b;
14         a = b;
15         b = temp;
16     }
17     return a;
18 }
19 module.exports = {
20     gcd : gcd
21 };

3.ES6解构赋值

 1 /**
 2  * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 3  *
 4  * 求出a、b的最大公约数。
 5  * @param a int 
 6  * @param b int 
 7  * @return int
 8  */
 9 function gcd( a ,  b ) {
10     // write code here
11     var temp;
12     while(b!=0){
13       [a,b] = [b,a%b];
14     }
15     return a;
16 }
17 module.exports = {
18     gcd : gcd
19 };

 

posted @ 2021-05-21 00:09  icyyyy  阅读(106)  评论(0)    收藏  举报