C语言辗转相除法

2024-12-27 02:37:24
推荐回答(4个)
回答1:

例如用辗转相除法求a b 最大公约数(a b谁大谁小无所谓):
int GCD( int a , int b )
{
int n=a%b;
whie(n != 0) //即: while(n)
{
a = b;
b = n;
n = a % b;
}
return b; //注意这里返回的是b 不是n
}

回答2:

# include
void simplify( const int *p1,const int *p2);
void main()
{
int a,b;
scanf ("%d/%d",&a,&b);
simplify(&a,&b);
}

void simplify( const int *p1,const int *p2)
{
int max = (*p1>*p2)?*p1:*p2; //确定最大数用来做辗转相除法的分子
int min = (*p1>*p2)?*p2:*p1; //确定最小数用来做辗转相除法的分母
int n = max%min; //n是用来判断余数是否为0
while(n) //如果不为0,则进行下面的程序
{
max = min;
min = n;
n = max%min; //当余数 n=0时,min就是两个数的最大公因数
}
int x = *p1/min;
int y = *p2/min;
printf ("%d/%d",x,y);
}

回答3:

int fun(int a,int b)
{
if(a==0||b==0)
return -1;
int res;
if( a
while( b )
{
res=a%b;
a=b;
b=res;
}

return a;
}

回答4:

int gcd(int x, int y){return y ? gcd(y, x%y) : x;}