最大公约数-辗转相除法
2008-06-19 17:29
155 查看
给定两个数 a,b, (a > b) 求 a ,b的最大公约数 gcd(a,b)。
算法的原型来自 欧几里德的《几何原本》(第VII卷,命题i和ii)中。
原理是:
若 r 是 a ÷ b 的余数, 则 gcd(a,b) = gcd(b,r)
这样程序就好写了。
int gcb(int a,int b)
{
int r = 0;
while (b)
{
r = a%b;
a = b;
b = r;
}
return a;
}
很简单的东西。这个题目是在看另外一道题目的时候遇到的 “如何在程序里精确地表示一个小数”。答案是:表示成分数。 于是就有了求最大公约数的问题了。
ps: 无限循环小数 0.nnnnn(n) ,这里单n 循环,可以表示成 n/9 (0.9(9) = 1)
算法的原型来自 欧几里德的《几何原本》(第VII卷,命题i和ii)中。
原理是:
若 r 是 a ÷ b 的余数, 则 gcd(a,b) = gcd(b,r)
这样程序就好写了。
int gcb(int a,int b)
{
int r = 0;
while (b)
{
r = a%b;
a = b;
b = r;
}
return a;
}
很简单的东西。这个题目是在看另外一道题目的时候遇到的 “如何在程序里精确地表示一个小数”。答案是:表示成分数。 于是就有了求最大公约数的问题了。
ps: 无限循环小数 0.nnnnn(n) ,这里单n 循环,可以表示成 n/9 (0.9(9) = 1)
相关文章推荐
- 辗转相除法——求最大公约数的好方法
- 数论基础之辗转相除法求最大公约数
- 辗转相除法 求 两个数的 最大公约数 和 最小公倍数
- 辗转相除法求最大公约数
- 利用辗转相除法求两个数的最大公约数
- 求最大公约数----辗转相除法
- 【C语言】编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。(辗转相除法和常规求法)
- 两个数的最大公约数------欧几里德算法(辗转相除法)
- 辗转相除法求得最大公约数的证明
- 辗转相除法求最大公约数
- leetcode 365. Water and Jug Problem 两个水杯倒水问题 + 最大公约数Gcd辗转相除法
- 最大公约数之辗转相除法
- 九度OJ 1056--最大公约数 1439--Least Common Multiple 【辗转相除法】
- 辗转相除法求最大公约数
- 【牛客网】【网易2016研发工程师编程题】【辗转相除法求最大公约数】
- F - hide handkerchief 利用辗转相除法 来计算两个数的最大公约数
- C语言 求两个数的最大公约数 (算法)--辗转相减法、辗转相除法
- 求最大公约数-辗转相除法
- 利用辗转相除法计算最大公约数与最小公倍数
- 辗转相除法——求最大公约数的好方法