数字问题2:最大公约数

Posted 纵横千里,捭阖四方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字问题2:最大公约数相关的知识,希望对你有一定的参考价值。

这个是最经典的数字的问题,在很多地方都能见到这个题目

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

第一种思路是根据最大公约数的定义,辗转相除法,从比较小的整数开始,向下–,直到找到满足要求的整数,如果都不满足,就返回1. 这样做的运算量比较大,效率比较低,更高效一点的是更相减损术。

1. 辗转相除法

 public int gcd (int a, int b) {
        // write code here
        int min=a>b?b:a;
        for(int i=min;i>=1;i--){
           if(a%i==0 && b%i==0){
               return i;
           } 
        }
        return 1;
    }

2. 更相减损数

上面的方式需要进行大量的取模运算,一种更为简单的方式是只用减法:

 public int gcd (int a, int b) {
        // write code here
           while(a != b){
            if(a > b)
                a -= b;
            else
                b -= a;
        }
        return a;
    }

以上是关于数字问题2:最大公约数的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

10个JavaScript代码片段,使你更加容易前端开发。

JavaScript笔试题(js高级代码片段)

web代码片段

android小知识点代码片段

片段从一开始就没有显示 |安卓工作室