永发信息网

C语言 求输入a、b,求这两个数的最大公约数和最小公倍数~求助~

答案:4  悬赏:30  手机版
解决时间 2021-04-01 04:58
  • 提问者网友:锁深秋
  • 2021-03-31 16:42
C语言 求输入a、b,求这两个数的最大公约数和最小公倍数~求助~
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-03-31 16:57
根据数学定义,要求a,b两个数的最大公约数,只需要找到能够同时整除a和b的最大整数即可,而最小公倍数为a*b/最大公约数。
对此,编写代码如下:
int gcd(int a, int b)
{
    int m = a>b?b:a;
    int r;
    for(r = m; r >0; r --)
        if(a%r==0 && b%r == 0)
            break;
    return r;
}

int main()
{
    int a,b,g;
    scanf("%d%d",&a,&b);
    g = gcd(a,b);
    printf("最大公约数=%d, 最小公倍数=%d
",g,a/g*b);
}
全部回答
  • 1楼网友:狂恋
  • 2021-03-31 20:04
hf
  • 2楼网友:玩世
  • 2021-03-31 18:37
#include
void main()
{
int m,n,t,s1,s2,m0,i;
scanf("%d%d",&m,&n);
if(m t=m;m=n;n=t;
i=n;
while(i>=1)
{s1=m%i;
s2=n%i;
if(s1==0&&s2==0) break;
i=i-1;}
printf("最大公约数为%d\n",i);
m0=m;
while(1)
{s1=m0%m;
s2=m0%n;
if(s1==0&&s2==0) break;
m0=m0+1;}
printf("最小公倍数为%d\n",m0);}
你可以拿这个程序尝试一下,我写的。
以前写的,你自己琢磨吧!
  • 3楼网友:西风乍起
  • 2021-03-31 17:34
#include
void main()
{
int a,b,temp;
scanf("%d%d",&a,&b);
if(a>b)
{
temp=b;
b=a;
a=temp;
}
temp=a;//定义小的数是a
for(temp;temp>0;temp--)
{
if(a%temp==0&&b%temp==0)
break;
}
printf("最大公因数是%d\n最小公倍数是:%d\n",temp,a*b/temp);
}
//不好意思,刚刚把那个scanf写成了printf,所以就没输入就直接死循环了
//对不起
//比如说两个数,知道一个小的数,就从小的那个数开始除,这样就比较容易
//求出最大公因数,如果你把循环改成(temp=1;temp//当a b都除temp没有余数时,temp就是最大公因数,而最小公倍数的算法是
// a*b/最大公因数 恩,就这样了!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯