标题:求一个最大公约数和最小公倍数大的解题思路
只看楼主
yuyangtian1000
该用户已被删除
 问题点数:0 回复次数:2 
求一个最大公约数和最小公倍数大的解题思路
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 解题 思路 最小公倍数 最大公约数 
2008-08-09 19:06
elan1986
Rank: 6Rank: 6
等 级:贵宾
威 望:18
帖 子:458
专家分:407
注 册:2007-12-17
得分:0 
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-08-09 20:33
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
得分:0 
好久没来逛过了!也来回个帖子
求最大公约数的最有效的算法是辗转相除。上述经典算法中的递归就是这意思,不过没必要比较两个数的大小,因为就算小的数在前,经过一次调用后就颠倒了!递归看起来是精简了代码,最好还是少用的好!
2008-08-09 22:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-227489-1-1.html




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

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