| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 250 人关注过本帖
标题:求一个最大公约数和最小公倍数大的解题思路
收藏  订阅  推荐  打印 
yuyangtian1000
Rank: 2
等级:注册会员
帖子:84
积分:1022
注册:2008-5-30
求一个最大公约数和最小公倍数大的解题思路

求一个最大公约数和最小公倍数大的解题思路
希望可以详细些,还有希望可以给个例子。
例子也希望可以有注解。
搜索更多相关主题的帖子: 解题  思路  最小公倍数  最大公约数  
2008-8-9 19:06
elan1986
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:194
积分:2202
注册:2007-12-17

main()
{
    int a,b,i,c,m,n;
    printf("input two number:");
    scanf("%d%d",&a,&b);
    if(b<a)
        {
            c=a; a=b; b=c;
        }
    for(i=a;i>0;i--)
        {
            if(a%i==0)
                m=i;
            if(b%i==0)   
                n=i;
            if(n==m) break;
        }
    printf("%d",n)
}
问问题前 先看论坛的其他帖子  
这个题有问过的!
上面的是我写的
只写了一问

下面这个是一个经典算法
#include <stdio.h>
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}
int main(void) {
    int m, n, max, temp;
    printf("Please input two numbers:\n");
    scanf("%d%d", &n, &m);
    if (m < n) {
        temp = m;
        m = n;
        n = temp;
    }
    max = gcd(m, n);
    printf("The max commom divisor is: %d", max);
    printf("\n The min common multiple is: %d", m * n / max);
}
2008-8-9 20:33
無邪的睡脸
Rank: 3Rank: 3
来自:湖北武汉
等级:中级会员
威望:1
帖子:331
积分:3830
注册:2007-9-11

好久没来逛过了!也来回个帖子
求最大公约数的最有效的算法是辗转相除。上述经典算法中的递归就是这意思,不过没必要比较两个数的大小,因为就算小的数在前,经过一次调用后就颠倒了!递归看起来是精简了代码,最好还是少用的好!

不要仅为成功而努力.要为做一个有价值的人而努力
kobe24j@sina.com

2008-8-9 22:23
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050817 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved