/* 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楼
----------------解决方案--------------------------------------------------------
/* 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楼
----------------解决方案--------------------------------------------------------
楼上的,如果你输入a、b的值成倍数,假如a=12,b=36,正确的结果应该是12,但是输出为2,如何解释呢?
如果你能编一下我写的程序,看一下结果,你就会发现,结果是12。
我没TC,所以没编楼主的程序。
我只是想说明,这个算法是没问题的。如果结果不对,那是其他原因啦。
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
To 2楼:如果其他没有问题的话,从1开始就可以的。
To 9楼:强人!
To 15楼:小弟刚开始学C++,还希望您多多提携.:)
[此贴子已经被作者于2006-2-23 16:23:20编辑过]
----------------解决方案--------------------------------------------------------