啊哈磊_编程从这里起步

标题: 求任意2个数的最大公约数哪里错了,能运行但是结果错的求指教 [打印本页]

作者: xiaoc    时间: 2014-4-24 16:30
标题: 求任意2个数的最大公约数哪里错了,能运行但是结果错的求指教
int main()
{
int i,a,b,c;
scanf("%d%d",&a,&b);
if(a<b)
   {c=b;
    b=a;
    a=c;
    }
    while(a%b!=0)
    {i=a&b;
    a=b;
    b=i;
}
printf("%d",a);



作者: rosynirvana    时间: 2014-4-24 16:51
i=a&b;

我没见过这样算gcd的,你确定不是
  1. i = a % b;
复制代码
?
作者: xiaoc    时间: 2014-4-24 17:14
rosynirvana 发表于 2014-4-24 16:51
i=a&b;

我没见过这样算gcd的,你确定不是  ?

辗转相除法

作者: xiaoc    时间: 2014-4-24 17:16
rosynirvana 发表于 2014-4-24 16:51
i=a&b;

我没见过这样算gcd的,你确定不是  ?

改了。还是结果不对

作者: rosynirvana    时间: 2014-4-24 17:28
xiaoc 发表于 2014-4-24 17:16
改了。还是结果不对

a % b != 0不能作为终止条件
例如a = 10, b = 2
作者: 李掌柜    时间: 2014-4-24 17:39
本帖最后由 李掌柜 于 2014-4-24 17:41 编辑

试试这个~~
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         int i,a,b,c;
  5.         scanf("%d%d",&a,&b);
  6.         c=a%b;
  7.         while(c!=0)
  8.         {
  9.                 a=b;
  10.                 b=c;
  11.                 c=a%b;
  12.         }
  13.         printf("%d\n",b);
  14.        
  15.         return 0;
  16. }
复制代码



作者: yangchengjun    时间: 2014-4-27 19:41
a % b != 0是赋值不是判断a % b != =0才对嘛
作者: yangchengjun    时间: 2014-4-27 19:42
a % b != 0是赋值不是判断a % b != =0才对嘛
作者: yangchengjun    时间: 2014-4-27 19:42
看错了,不好意思{:soso_e162:},你对的




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2