Foxtable(狐表)用户栏目专家坐堂 → FoxTable中如何将小数转化为分式?


  共有23931人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
狐孩儿
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:60 积分:561 威望:0 精华:2 注册:2008/9/10 13:44:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yuanbin
  12楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:102 积分:880 威望:0 精华:4 注册:2008/8/31 21:47:00
  发帖心情 Post By: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 上一页 1 2