求两个正整数的最大公约数
我写的是:
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); }
----------------解决方案--------------------------------------------------------
明白了,循环写错了,难怪不对
多谢斑竹指点
----------------解决方案--------------------------------------------------------