javascript求最大公约数

 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>

 

posted @ 2018-04-19 15:47  web_小隆  阅读(397)  评论(0编辑  收藏  举报