Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共12 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:FoxTable中如何将小数转化为分式?

11楼
狐孩儿 发表于:2008/10/13 16:41:00
以下是引用kylin在2008-10-13 16:38:00的发言:
老六的代码,生成的结果统统是“分子/分母”形式,如11.5生成23/2;lxl斑竹是“整数 分子/分母”,如11.5生成11 1/2
都收藏,呵呵!

嘻嘻,就輸出格式,老六那個不如lxl斑竹的專業!

[此贴子已经被作者于2008-10-13 16:42:04编辑过]
12楼
yuanbin 发表于:2008/10/13 16:50:00

乍一看,觉得代码有点玄。不过此处却引出了一个求最大公约数的算法。我觉得有意思,就将网站搜索的资料粘贴在此供大家学习参考。主要是算法应用问题,如果知道了算法也就没那么玄乎了。呵呵。
欧几里德算法描述:欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b)
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有d|a, d|b,即表示d能整除a,也能整除b,而r = a - kb,因此d|r ,因此d是(b,a mod b)的公约数
假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r ,因此d也是(a,b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。

主要过程是设两数为ab,a>b :
  1)a除以b得余数r,即r=a mod b;
  2)令a=b,b=r,r=a mod b;
  3)如果r不等于0则跳回1),否则结束,最后一次的余数就是两数的最大公约数。

定理:gcd(a,b) = gcd(b,a mod b)
算法模型:
r:=a mod b
while r<>0 do
a:=b
b:=r
r:=a mod b
enddo

[此贴子已经被作者于2008-10-13 16:57:36编辑过]
共12 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .01758 s, 2 queries.