| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:【原创】求最大公约数的两种代码(递归与非递归)
只看楼主 加入收藏
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
结帖率:71.43%
收藏
 问题点数:0 回复次数:1 
【原创】求最大公约数的两种代码(递归与非递归)
//用递归法求最大公约数
int gcd( int a, int b )
{
    return b ? gcd(b,a%b) : a;
}

//用循环法求最大公约数
int gcd( int a, int b )
{
    while(b)
    {
        int tmp;
        tmp = b;
        b = a%b;
        a = tmp;
    }
    return a;
}

欢迎大家指正!
搜索更多相关主题的帖子: 递归 最大公约数 代码 
2010-11-04 10:39
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
收藏
得分:0 
//求最小公倍数的代码如下
int lcm( int a, int b )
{
    return a/gcd(a,b)*b;
}// 先除后乘不容易“溢出”

三个数的最大公约数:gcd(a,gcd(b,c))
三个数的最小公倍数:lcm(a,lcm(b,c))
注意:三个数的最小公倍数 未必等于 三个数的乘积÷三个数的最大公约数
例如:12、24、36的最大公约数是12,最小公倍数是72。

更多数的情况请大家依此类推。
2010-11-04 10:53
快速回复:【原创】求最大公约数的两种代码(递归与非递归)
数据加载中...
 
   



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

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