| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 764 人关注过本帖
标题:c 语言公约数问题!
只看楼主 加入收藏
huhan1986120
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-1-31
结帖率:0
收藏
已结贴  问题点数:5 回复次数:5 
c 语言公约数问题!
求最小公约数
hcf(u,v)
int u,v;
{
 int a,b,t,r;
 if(u>v)
{
t=u;u=v;v=t;
}
a=u;b=v;
while((r=b%a)!=0)
{
b=a;a=r;
}
return(a);
}
我想问一下,while循环里面一段是什么意思,最好用数学的方法解释,别的方法也可以!谢谢大侠
搜索更多相关主题的帖子: 公约数 语言 
2010-01-31 11:05
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:1 
while((r=b%a)!=0)          b%a是b除a求余数  !=就是不等于    整个这一句就是 当b除a得出的余数不等于0时(b不能被a整除)
2010-01-31 12:31
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:1 
hcf(u,v)
int u,v;
{
int a,b,t,r;
if(u>v)
{
t=u;u=v;v=t;
}
a=u;b=v;
while(r=b%a)
{
b=a;a=r;
}
return(a);
}
这个是辗转辗转相除法又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。相除法【要是没记错的话】
辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
2010-01-31 15:45
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
O(n2) 肯定是说大了,没这么慢。是 log(n)。
准确的说,两个数中最大的那个数,如果不大于 Fibonacci 数列的第 n 项,那么所需除法次数不超过 n 。
2010-01-31 18:37
huhan1986120
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-1-31
收藏
得分:0 
谢谢楼上的大侠们!
2010-02-02 11:21
human84
Rank: 3Rank: 3
来 自:哈尔滨 / 重庆
等 级:论坛游侠
帖 子:154
专家分:141
注 册:2009-11-1
收藏
得分:1 
看不懂...哪位大侠讲讲~
2010-02-02 11:39
快速回复:c 语言公约数问题!
数据加载中...
 
   



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

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