c语言求两个数的最大公约数

 我来答
武紫桐杜波
2019-03-18 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:872万
展开全部
思路:求两个数的最大公约数使用辗转相除法
辗转相除法,
又名欧几里德算法(Euclidean
algorithm)乃求两个正整数之最大公因子的算法。原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。
参考代码:
#include <stdio.h>
int main()
{
  int x,y,z;  
  scanf("%d%d",&x,&y);
  while(x!=0)
  {
  z=x%y;
  x=y;
  y=z;
  }
  printf("%d\n",z);
return 0;
}
/*
运行结果:
6 27
3
*/
班欣愉星雪
2019-06-07 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:781万
展开全部
#include
int
main()
{
int
i,a,b,t;
scanf("%d%d",&a,&b);//输入数a,b
if(a>b)//比较a,b大小,如果a>b则交换,结果为a
=
2;
i--)//以较小的a为基数,每次i减小1循环求最大公约数
{
if
(a
%
i
==
0
&&
b
%
i
==
0)//如果两数均能整除某数则该数为最大公约数
{
printf("最大公约数是:%d\n",i);
break;//已得到最大公约数后跳出循环
}
}
if(i==1)//若循环到最后仍无最大公约数则i=1
printf("两数只能同时被1整除!\n");
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侍思山萨蔚
2019-06-22 · TA获得超过2.9万个赞
知道小有建树答主
回答量:1.1万
采纳率:33%
帮助的人:800万
展开全部
#include
<stdio.h>
void
main()
{
int
m,n,a,b;
int
r;
printf("请输入m,n:\n");
scanf("%d,%d",&m,&n);
if(m>=n)
a=m,b=n;
else
a=n,b=m;
r=a%b;
while(r!=0)
{
a=b;
b=r;
r=a%b;
}
printf("最大公约数是:
%d\n",b);
}
楼上的int
abc(int
x,int
y);
int
edf(int
x,int
y);
是自定义函数
估计你还没有学到吧
其实用一个循环+“辗转相除法”
就行了
去年学的,学艺不精
望采纳,谢谢!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式