题解 | #最大公约数#

最大公约数

http://www.nowcoder.com/practice/cf4091ca75ca47958182dae85369c82c

我不是欧几里得,他这个方法我真想不到;

    public int gcb(int num1,num2){
    //判断两个数直接相除是否等于0,等于0的话fan,返回较小的数,结束。
     if(num1 >= num2 && (num1 % num2) == 0  ){
         return num2;
     }else if ((num2 > num1 ) && (num2 % num1) == 0){
         return num1;
     }
    //tem表示最大公约数,如果两个数都是质数的话,那么最大公约数就是1
     int temp = 1;
     int lowNum,highNum;
     if (num1 > num2){
         highNum = num1;
         lowNum = num2;
     }else {
         lowNum = num1;
         highNum = num2;
     }
    //8=1*8 2*4 4*2,sqrt(8)=2.828,所以只要从1循环sqrt(lowNum)就可以把所有的因子找出来,
     double j1 =  Math.sqrt(lowNum);
     int j = (int )j1;
     for (int i = 1;i < j ;i++){
           //寻找因子,
         if ((lowNum % i) == 0 ){
            //另一个因子 8%1=0,anotherNum = 8;
            int anotherNum = lowNum / i;

            if((highNum % i) == 0){
                temp = i;
            }else if ((highNum % anotherNum) == 0){
                return anotherNum;
            }
         }
     }

     return temp;
    }
全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-26 14:50
人力小鱼姐:有后面墨迹那两句的时间问题早回答完了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务