更相减损术

//编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。
#include<stdio.h>
void swap(int *p,int *q)
{
  int m=*p;
   *p=*q;
   *q=m;
}

int max_divisor(int a,int b)
{
  
  int s=a-b;   //10 9  s=1
  
  if(a < b)
  {
	 swap(&a,&b);  //此时 a >= b,更相减损术求最大公约数
  }
  
  while(s != b && s != a)   // s=1 b=9
  {
	 if(s > b)
	 {
		swap(&s,&b);
	 }
	 
	 s = b-s;
	 b = b-s;
  }
  
  return s;
}

int main()
{
	
	int ret = max_divisor(12,4);
    
	printf("%d\n",ret);
    
	return 0;
}

你可能感兴趣的:(更相减损术)