求最大公约数问题
#include<stdio.h>int gcd(int,int,int,int);
int main()
{
int a,b;
int x,y;
int L;
printf("\nEnter the a:");
scanf("%d",&a);
printf("\nEnter the b:");
scanf("%d",&b);
L=gcd(a,b,x,y);
printf("The L is %d",L);
return 0;
}
int gcd(int a,int b,int x,int y)
{
if(a>=b)
{
x=a%b;
y=b%x;
}
else
{
x=b%a;
y=a%x;
}
while(y!=0)
{
b=y;
y=x%y;
x=b;
}
return (x);
}
原问题是求两数最大公约数,算法如下。
a.将较大的数用较小的数相除,保留余数。
b.将较小的数除以余数,再保留余数。
c.继续将前面的余数除以当前的余数,直到余数为零。这时,最后一个非零余数就是最大公约数。
此程序有何问题,求解答。