最大公约数
题目:求出两个数的最大公约数,如果有一个自然数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 };

浙公网安备 33010602011771号