| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:不好意思,又要麻烦大家一道题了
只看楼主 加入收藏
小申子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-5
收藏
 问题点数:0 回复次数:3 
不好意思,又要麻烦大家一道题了

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

我写的是:

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两个数时,就按什么都没反应了,像死机了(狂郁闷)

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

搜索更多相关主题的帖子: 麻烦 
2004-10-07 00:11
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
收藏
得分:0 

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


点 鼠 标 , 救 饥 民 http://www./
2004-10-07 00:30
忆楠
Rank: 1
等 级:新手上路
帖 子:721
专家分:0
注 册:2004-7-5
收藏
得分:0 

帮你改了一下

#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); }


点 鼠 标 , 救 饥 民 http://www./
2004-10-07 00:31
小申子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-5
收藏
得分:0 

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

多谢斑竹指点


世风日下,人心不古!
2004-10-07 16:21
快速回复:不好意思,又要麻烦大家一道题了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015536 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved