当前位置: 代码迷 >> C语言 >> 最大公约数,为什么不行?
  详细解决方案

最大公约数,为什么不行?

热度:349   发布时间:2006-03-06 11:19:00.0

楼主注意红色部分,还有c=c+1跟c++是等同的
ps:这个程序顺便也求了最小公倍数


#include<stdio.h>

void main()
{
int x,y,a,b,d=1,e,i=2;
printf("Please input two numbers:\n");
scanf("%d%d",&x,&y);
a=x,b=y;
do
{
for(;!(a%i)&&!(b%i);)
{a=a/i;b=b/i;d=d*i;};
i++;
}
while(i<=a&&i<=b);
e=(x*y)/d;
printf("The two numbers are:%d,%d\n",x,y);
printf("最大公约数:%d\n",d);
printf("最小公倍数:%d\n",e);
}


----------------解决方案--------------------------------------------------------
int fun(int a,int b)
{
int t=(a>b)?b:a;
while(t>1)
{
if(a%t==0&&b%t==0)
break;
t--;
}
return t;
}
----------------解决方案--------------------------------------------------------

我们学过是用欧几里德算法做的.
我用c-free测试过.可以的.
main()
{
int a,b,r,x;
scanf("%d,%d",&a,&b);
if(a<b)
{x=b;
b=a;
a=x;
}
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
printf("%d",a);
}


----------------解决方案--------------------------------------------------------
以下是引用偶成在2006-3-6 16:25:00的发言:

我们学过是用欧几里德算法做的.
我用c-free测试过.可以的.
main()
{
int a,b,r,x;
scanf("%d,%d",&a,&b);
if(a<b)
{x=b;
b=a;
a=x;
}
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
printf("%d",a);
}

就是辗转相除


----------------解决方案--------------------------------------------------------

呵呵,这样的回答蛮可爱的


----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main(void)
{
    int m,n,t,r;
    scanf("%d%d",&m,&n);
    for(t=1;(t<=m&&t<=n);++t)
    {
    if(m%t==0&&n%t==0)
    r=t;
    }
      printf("%d\n",r);
      system("pause");
      return 0;
}
----------------解决方案--------------------------------------------------------
怎么没人听feng1256 的阿?
----------------解决方案--------------------------------------------------------
scanf("%d%d\n",&x,&y); 有时弄不明白,为什么好多人都要在scanf中要加个换行符。。。
----------------解决方案--------------------------------------------------------
回复 1# 的帖子
http://bbs.accp-teem.com.cn/showtopic-1647

答案在这里...

自己看看是不是...

[[it] 本帖最后由 xiaoKK 于 2008-3-28 09:00 编辑 [/it]]
----------------解决方案--------------------------------------------------------
好像不能输入  可能你输入语句后面的"\n"有点问题,我把他去掉后就可以得到正确答案.

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
{if (a%c==0&&b%c==0) d=c;}
printf("%d\n",d);
}
----------------解决方案--------------------------------------------------------
  相关解决方案