weixin_45920042
2020-11-02 21:57
采纳率: 50%
浏览 85

给给定的两组数据,每组是两个整数,求这两组数最大公约数之和和最小公倍数之和

#include
int maxgys(int x, int y);
int mingbs(int x, int y);

int main()
{
int num1,num2,num3,num4;
int a,b,c,d;
int t;

scanf("%d%d%d%d", &num1,&num2,&num3,&num4);

if(num1<num2)
{
    t=num2;
    num2=num1;
    num1=t;

}
if(num3<num4)
{
    t=num4;
    num4=num3;
    num3=t;

}

a=maxgys(num1,num2);
b=maxgys(num3,num4);

c=mingbs(num1,num2);
d=mingbs(num3,num4); 


printf("%d\n%d\n",a+b,c+d);

return 0;

}

int maxgys (int x, int y)
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;

}
return x;

}

int mingbs(int x,int y)
{

int i;
int z,w;

for(i=1;i<=x;i++)
{
    z=x*i;
    for(i=1;i<y;i++)
    {
        w=y*i; 

        if(z==w)
        {
            goto L1;
        }

    }

}
L1: ;
return z;

}
最大公约数出来了,最小公倍数没出来,各位大佬可不可以教下小白,哪里有问题,跪谢大佬

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • B1acktion 2020-11-02 22:25
    已采纳

    最小公倍数可以直接用公式算,设gcd(a,b)为a和b的最大公约数,lcm(a,b)为 a 和 b 的最小公倍数,那么就有 lcm(a,b) = a * b / gcd(a,b)

    点赞 评论

相关推荐 更多相似问题