欧几里德算法(辗转相除法)

原理:a=kp , b=mp ,p是a和b的公因数;
a-b=(k-m)p ,
则a-b 和min(a,b)的公因数也是p;
r 为a/b的余数 r=(k-n
m)*p,
r 和min(a,b)的公因数也是p.

int gcd(int a,int b)
{
	int r;
		if(a<b) 
	{
		int temp;
		temp = a;
		a = b;
		b = temp;
	}
	
	while(1)
	{
		r = a%b;
		if(r==0) break;
		else
		{
			a=b;b=r;
		}
	}
	return b;
 } 
发布了43 篇原创文章 · 获赞 80 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43868654/article/details/85013319