欧几里德算法(最大公约数)
辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。
也可用于数制转换,例如十进制转为8进制。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 最大公约数 { class Program { static void Main(string[] args) { Console.WriteLine("12与18的最大公约数为:{0}", gys(12, 18)); Console.Write("6与9的最小公倍数为:{0}", gbs(6, 9)); Console.ReadLine(); } //欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 //其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) //其算法用C#语言描述为 /// <summary> /// 最大公约数 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static int gys(int a, int b) { if (a == 0) { return b; } if (b == 0) { return a; } if (a < b) { int temp; temp = a; a = b; b = temp; } while (b != 0) { int temp; temp = a % b; a = b; b = temp; } return a; } /// <summary> /// 附:最小公倍数 /// </summary> /// <param name="m"></param> /// <param name="n"></param> /// <returns></returns> public static int gbs(int m, int n) { return m * n / gys(m, n); } } }