辗转相除法求最大公约数

网转一段:

 

辗转相除法是利用以下性质来确定两个正整数 a 和 b 的最大公因子的:
1. 若 r 是 a ÷ b 的余数, 则
gcd(a,b) = gcd(b,r)
2. a 和其倍数之最大公因子为 a。
另一种写法是:
1. a ÷ b,令r为所得余数(0≤r<b)
若 r = 0,算法结束;b 即为答案。
2. 互换:置 a←b,b←r,并返回第一步。

 

================


 

/* Name:Greatest Common Divisor Author:Duakeak Blog:http://blog.csdn.net/Dualeak Date:2009-10-24 Description:求a与b的最大公约数. */ #include "stdio.h" int gcd(int a, int b) { if( 0 == a%b ) return b; else return gcd(b, a%b); } int main(void) { int a=-9, b=15; printf("a=%d, b=%d, gcd(a,b)=%d/n", a, b, gcd(a,b)); return 0; }

你可能感兴趣的:(算法笔记)