求最大公约数(请高手看下错在哪??)

来源:百度知道 编辑:UC知道 时间:2024/06/08 18:13:57
#include"stdio.h"
void main()
{
int m,n,k;
printf("Enter m,n(>0):");
scanf("%d%d",&m,&n);
printf("the greatest common divisor of %d and %d\n",m,n);
do
{
k=m%n;
m=n;
n=k;
}while(n!=0);
printf("is %d.\n",m);
}

#include"stdio.h"
void main()
{
int m,n,k;
printf("Enter m,n(>0):");
scanf("%d,%d",&m,&n);//运行下来没有错,算法是对的,主要是这里的输入格式改一下,按照你原来的方式,输入m和n的值是中间得用空格分开,这样改,你就可以用逗号分开了,
printf("the greatest common divisor of %d and %d\n",m,n);
do
{
k=m%n;
m=n;
n=k;
}while(n!=0);
printf("is %d.\n",m);
}

两个数的最大公约数?
欧几里德算法

//递归实现
int gcd(int m,int n)

{

if (m < n)

{

int tmp = m;

m = n;

n = tmp;

}

if (n == 0)

return m;

else

return gcd(n,m % n);

}

/////////////////////////////
//非递归实现

int gcd2(int m,int n)

{

if (m < n)

{

int tmp