1 <!doctype html> 2 <head> 3 <meta charset = "utf-8" /> 4 </head> 5 6 <body> 7 <script> 8 /** 9 欧几里得算法求最大公约数 10 @param m 大数 11 @param n 小数 12 @return n 最大公约数 13 */ 14 const euclid = function(m,n){ 15 let r; 16 while((r = m % n) != 0){ 17 m = n; 18 n = r; 19 } 20 return n; 21 } 22 /** 23 更相减损术求最大公约数 24 @param m 大数 25 @param n 小数 26 @return n 最大公约数 27 */ 28 const MPOR = function(m,n){ 29 //判断是否都为偶数,若是则除2直到不能除为止 30 while(m % 2 == 0 && n % 2 == 0){ 31 m = m / 2; 32 n = n / 2; 33 } 34 //当差等于最小值 35 let temp = null; 36 while((temp = m - n) != n){ 37 //比较差和小数,把较大的给m,较小的给n 38 if(temp > n){ 39 m = temp; 40 } else{ 41 m = n; 42 n = temp; 43 } 44 } 45 46 return n; 47 } 48 document.write(euclid(98,63) + "<br />"); 49 document.write(MPOR(98,63)); 50 </script> 51 </body> 52 53 </html>