编程一个C语言程序,输入两个数,采用辗转相除法来计算最大公约数

 我来答
四舍五不入6
高粉答主

2020-03-07 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2.1万
展开全部

可以参考下面的代码:

#include <stdio.h>

int main()

{

int m, n, r;

scanf ("%d%d", &m, &n);

if (m>n){r=m, m=n, n=r;}

r=n%m;

while (r!=0){

n = m;

m = r;

r = n%m;

}

printf ("%d\n", m);

return 0;

}

扩展资料:

函数 scanf() 是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

参考资料来源:百度百科-scanf (计算机语言函数)

参考资料来源:百度百科-while (循环语句及英文单词)

小星星教育知识分享
高粉答主

2019-12-04 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67132

向TA提问 私信TA
展开全部

#include<stdio.h>

#include<stdlib.h>

intmain()

{

inta,b,r;

scanf("%d%d",&a,&b);

while(b!=0)//当其中一个数为0,另一个数就是两数的最大公约数

{

r=a%b;

a=b;

b=r;

}

printf("最大公约数%d\n",a);

system("pause");

}

扩展资料

C语言求两个数的最大公约数辗转相减法

#include<stdio.h>

intmain()

{

inta=0;//a、b都是某个数的整数倍

intb=0;

printf("pleaseEnter2datas:");

scanf("%d%d",&a,&b);

while(a*b!=0),//a或者b不能为0

{

if(a>b)

{

a=a%b;//将余数赋给最大值,其余数某个数的整数倍

}

else

{

b=b%a;

}

printf("%d\n",a=0?b:a);

return0;

}

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自恋狂TL
2016-04-24 · TA获得超过691个赞
知道小有建树答主
回答量:518
采纳率:75%
帮助的人:99.7万
展开全部
#include <stdio.h>
int maxGY(int a,int b)//返回最大公约数的函数
{
int temp;
if(a<b){ temp=a;a=b;b=temp;}//确保a不小于b,即a-b>0
//辗转相除法,就是两个数中,大减小,大的丢弃,取小的和差,直到小的和差相等为止
//比如:6和9;
//9-6=3;6-3=3此时3=3所以最大公约数是3
while(a!=b)
{
a=a-b;
if(a<b){ temp=a;a=b;b=temp;}
}
return b;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",maxGY(a,b));
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wchyumo2011
推荐于2018-04-14 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2757万
展开全部
#include <stdio.h>
int main()
{
    int m, n, r;
    scanf ("%d%d", &m, &n);
    if (m>n){r=m, m=n, n=r;}
    r=n%m;
    while (r!=0){
        n = m;
        m = r;
        r = n%m;
    }
    printf ("%d\n", m);
    return 0;
}
追问
又怎么通过调用计算最大公约数函数实现求最小公倍数。
追答
#include <stdio.h>
int gcd(int m, int n)
{
    int r;
    if (m>n){r=m,m=n,n=r;}
    r=n%m;
    while (r!=0){
        n=m;
        m=r;
        r=n%m;
    }
    return m;
}
int main()
{
    int m, n, r;
    scanf ("%d%d", &m, &n);
    printf ("%d\n", gcd(m,n));
    return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犁问寒A1
2018-04-13
知道答主
回答量:1
采纳率:0%
帮助的人:869
展开全部
#include<stdio.h>
int main()
{int m,n,a,b,c,r;
printf("输入两个整数:\n");
scanf("%d%d",&m,&n);
a=m;
b=n;
if (a>b)
{
r=a;
a=b;
b=r;
}
r=a%b;
while (r!=0)
{
b=a;
a=r;
r=a%b;
}
c=m*n/b;
printf("最大公约数是:%d\n",b);
printf("最小公倍数是:%d\n",c);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式