| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3808 人关注过本帖
标题:求3个数的最大公约数
只看楼主 加入收藏
yu1543054075
Rank: 1
等 级:新手上路
帖 子:102
专家分:8
注 册:2015-4-30
结帖率:90.24%
收藏
已结贴  问题点数:10 回复次数:4 
求3个数的最大公约数
//从键盘中任意输入3个数,编程求出这3个数的最大公约数和最小公倍数
#include<stdio.h>
#include<math.h>
int ss(int,int);
int main(void)
{
    int a,b,c,c1,c2,t,e,m;
    printf("请输入3个整数:\n");
    scanf("%d%d%d",&a,&b,&c);
    if(a<b)
    {
        t=a;
        a=b;
        b=c;
    }
    if(a<c)
    {
        t=a;
        a=c;
        c=t;
    }
    if(b<c)
    {
        t=b;
        b=c;
        c=t;
    }
    m=a*b*c;
    c1=ss(a,c);//求出最大的与最小的最大公约数
    c2=ss(b,c);//求出中间的与最小的最大公约数
    e=ss(c1,c2);
    printf("最大公约数和最小公倍数为:%d,%d\n",e,m/e);
   
}

int ss(int c1,int c2)//求最大公约数
{
    int t,c;
    if(c1<c2)
    {
        t=c1;
        c1=c2;
        c2=t;
    }
    c=c1%c2;
    while(c!=0)
    {
        c1=c2;
        c2=c;
        c=c1%c2;
    }
    return c2;
}
结果不对,请各位不吝赐教
搜索更多相关主题的帖子: 最小公倍数 include 公约数 最大的 键盘 
2015-05-05 16:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
"结果不对,请各位不吝赐教 "
------ 输入什么,输出什么,期待输出什么?

其它没看,我只看到 m/e,觉得不对吧
比如 6, 10, 15 的最大公约数为 1,最小公倍数不是 6*10*15/1,而是 30
2015-05-05 16:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
设gcd为最大公约数函数
x = gcd( a, b ); // 求得a和b的最大公约数
y = a*b / x; // 求得a和b的最小公倍数
z = gcd( x, c ); // 求得a,b,c的最大公约数
w = y*c / gcd( y, c ); // 求得a,b,c的最小公倍数


[ 本帖最后由 rjsp 于 2015-5-5 16:20 编辑 ]
2015-05-05 16:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
程序代码:
#include<stdio.h>

int ss(int,int);

int main(void)
{
    int t1,t2,t3,t4;

    int a[]={40,15,6};
    t1=ss(a[0],a[1]);
    t3=a[0]*a[1]/t1;
    t2=ss(t1,a[2]);
    t4=a[2]*t3/ss(t3,a[2]);
    printf("第一组最大公约数是%d  最小公倍数是%d \n",t2,t4);
    //////////////
    int b[]={40,16,12};
    t1=ss(b[0],b[1]);
    t3=b[0]*b[1]/t1;
    t2=ss(t1,b[2]);
    t4=b[2]*t3/ss(t3,b[2]);
    printf("第二组最大公约数是%d  最小公倍数是%d \n",t2,t4);

}

int ss(int e,int f)//求最大公约数
{ 
    int b,c,d;
    for(b = e, c = f; d = b % c; b = c, c = d);
    return c;
}

DO IT YOURSELF !
2015-05-05 16:50
yu1543054075
Rank: 1
等 级:新手上路
帖 子:102
专家分:8
注 册:2015-4-30
收藏
得分:0 
非常感谢,懂了
2015-05-05 18:09
快速回复:求3个数的最大公约数
数据加载中...
 
   



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

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