java吧 关注:1,228,891贴子:12,690,004
  • 12回复贴,共1
求两个数45,27的最大公约数,为什么输出的不是9,而是45.
public class Main
{
public static void main(String[] args)
{
int a=45,b=27;
while(true){
if(a<b);
{int temp=a;
a=b;
b=temp;
}
int c=a%b;
a=b;
b=c;
if(c==0);{
break;
}
}
System.out.println(a);
}
}


IP属地:广东来自Android客户端1楼2015-12-08 01:25回复
    你写的while没起作用


    来自Android客户端2楼2015-12-08 01:28
    收起回复
      求两个数45,27的最大公约数,为什么输出的不是9,而是45.
      public class Main
      {
      public static void main(String[] args)
      {
      int a=45,b=27;
      boolean b=false;
      while(true){
      if(a<b);
      {int temp=a;
      a=b;
      b=temp;
      }
      int c=a%b;
      a=b;
      b=c;
      if(c==0);{
      b=false;
      }else{ b=turn;
      }
      }
      System.out.println(a);
      }
      } 现在再试试,没运行,用手机改的


      来自Android客户端4楼2015-12-08 01:33
      收起回复
        while那个地方改成(b==turn)


        来自Android客户端6楼2015-12-08 01:35
        回复
          写上去就这样,我也是用手机码的


          IP属地:广东来自Android客户端8楼2015-12-08 01:51
          回复
            错在if()后面的分号,这个分号标志语句结束因此你的if语句没起作用执行一次直接break


            IP属地:北京来自iPhone客户端9楼2015-12-08 02:34
            回复
              用欧几里得吧,(a,b)等于(b,r),其中a=b*c+r,几行代码搞定
              int oujilide(a,b)
              {
              if a<b swap(a,b)
              if(b==0) return a;
              return oujilide(b,a-a/b*b)
              }


              IP属地:广东来自iPhone客户端10楼2015-12-08 09:14
              收起回复