当前位置: 代码迷 >> C语言 >> 不好意思,又要麻烦大家一道题了
  详细解决方案

不好意思,又要麻烦大家一道题了

热度:834   发布时间:2004-10-07 00:11:00.0
不好意思,又要麻烦大家一道题了

求两个正整数的最大公约数

我写的是:

main() { int m,n,t; scanf("%d,%d",&m,&n); if(m>=n) { t=n; while(t>1) { if(m%t==0&&n%t==0) break; t=n-1; } } printf("The big number is %d\n",t); }

我的思路是把两数中最小的一个数作为除数,如两数都能整除,则它就是最大公约数;如不能,则将它减1,最小到1

但我在TC上调试时结果明显不对,尤其是当我输入12,8两个数时,就按什么都没反应了,像死机了(狂郁闷)

希望大家帮我看看这个程序哪里出问题了,标准的算法我书上已看过了,只是想知道我的哪里错了,谢谢大家了

搜索更多相关的解决方案: 麻烦  

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

你写的是t=n-1 你想想 n=5 n-1永远是4 t也就永远是4 是个死循环 当然不会有反映了


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

帮你改了一下

#include "Stdio.h"

main() { int m,n,t; scanf("%d,%d",&m,&n);

t=m>n?n:m; printf("the min is %d",t);

for(;t>0;t--) { if(m%t==0&&n%t==0) break; } printf("The big number is %d\n",t); }


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

明白了,循环写错了,难怪不对

多谢斑竹指点


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