C语言程序 设计:用辗转相除法求两个正整数的最大公约数

编写程序
2024-10-28 08:51:09
推荐回答(5个)
回答1:

main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1 { temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}

回答2:

#define
_CRT_SECURE_NO_WARNINGS
#include

#include

int
main()
{
int
a,
b,r;
scanf("%d
%d",
&a,
&b);
while
(b
!=
0)//当其中一个数为0,另一个数就是两数的最大公约数
{
r
=
a%b;
a
=
b;
b
=
r;
}
printf("最大公约数%d\n",
a);
system("pause");
}
例子:
105252
252%105=42;
105%42=21;
42%21=0;
即21为105与252的最大公约数
扩展资料:
while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:
一、在while语句中设定条件语句,条件不满足,则循环自动停止。
如:只输出3的倍数的循环;可以设置范围为:0到20。
二、在循环结构中加入流程控制语句,可以使用户退出循环。
1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。
2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

回答3:

我发现C中这个算法最乱了。现在一般都用这个算法。a,b.假如a比较小,那么从a到1不断地做减法,知道满足某个数能整除a,b.
int GetCommonDivisor(int a, int b)
{
int i,temp=a for(i=temp;i>0;i--)
if(a%i==0&&b%i==0)
break;
return i;

}

这个满足公约数的意义,理解起来简单。

回答4:

#include"stdio.h"
main()
{
int m,n,t;
printf("m,m=");
scanf("%d%d",&m,&n);
while(n) /*当n不为0时进行循环*/
{t=m%n
m=n;
n=t;
}
printf("%d",m);
}
本人刚学,请多多指教。

回答5:

int f(int x ,int y)
{
while(y!=0)
return f(y,x%y);
return x;
}
递归加辗转相除法