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

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

热度:445   发布时间:2006-02-23 01:37:00.0
以下是引用alonefire在2006-2-22 14:41:00的发言:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int a,b,c,d;
scanf("%d%d\n",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
{if (a%c==0&&b%c==0) d=c;}
printf("%d",d);
}

嘿嘿scanf("%d%d\n",&a,&b); 这是什么呀?


----------------解决方案--------------------------------------------------------
2-10楼
----------------解决方案--------------------------------------------------------
以下是引用alonefire在2006-2-22 14:41:00的发言:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int a,b,c,d;
scanf("%d%d\n",&a,&b);
for(c=1;c<=a&&c<=b;c=c+1)
{if (a%c==0&&b%c==0) d=c;}
printf("%d",d);
}

你这不是求最大公约数吧,这个d的值是小于a,同时也小于b的最小数吧。


----------------解决方案--------------------------------------------------------
楼主你的算法有问题吧。
求最大公约数我只知道三种算法:
辗转相除法
更相减损法
你用的是列举法
但是用得好像不正确,一时之间还没有找到为什么?
----------------解决方案--------------------------------------------------------

算法没问题。
我用C++的编了一下,没问题啊。

#include <iostream>
using namespace std;

int main()
{
int a,b,c,d;
cout << "input a:"<<endl;
cin >> a;
cout << "input b:" << endl;
cin >> b;
for (c=1;c<=a&&c<=b;c++ )
{
if (a%c==0 && b%c==0)
{
d=c;
}
}
cout << "d:" << d <<endl;
return 0;
}


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

楼上的,如果你输入a、b的值成倍数,假如a=12,b=36,正确的结果应该是12,但是输出为2,如何解释呢?


----------------解决方案--------------------------------------------------------
/* Note:Your choice is C IDE */
#include "stdio.h"
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",d);
getch();
}


没问题 .顶9楼
----------------解决方案--------------------------------------------------------
以下是引用zhangjuan在2006-2-23 13:53:00的发言:

楼上的,如果你输入a、b的值成倍数,假如a=12,b=36,正确的结果应该是12,但是输出为2,如何解释呢?

如果你能编一下我写的程序,看一下结果,你就会发现,结果是12。
我没TC,所以没编楼主的程序。
我只是想说明,这个算法是没问题的。如果结果不对,那是其他原因啦。
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
To 2楼:如果其他没有问题的话,从1开始就可以的。
To 9楼:强人!
To 15楼:小弟刚开始学C++,还希望您多多提携.:)

[此贴子已经被作者于2006-2-23 16:23:20编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案