日期:2014-05-17  浏览次数:20981 次

一个小数,把他分解成2个正整数的除法,且这两个正整数的足最大公约数为1,以前好像看到过这个算法。那位还有记得不。
比如1.5=3/2 , 0.16=4/25,类似这样的,记得以前看到过代码,一下子找不到了。

------解决方案--------------------
本帖最后由 caozhy 于 2013-03-10 21:58:56 编辑
很简单。lz也算是写了不少程序了,就不贴详细代码了。

思路,首先移动小数点,变成整数/10^n的形式。
比如1.5 = 15/10  0.16 = 16/100
然后求最大公约数15, 10为5,16, 100为4。
最后同除公约数3/2 4/25
收工。
------解决方案--------------------
是的,先把小数按10的n次方(n为小数点后的位数)
(小数*10^n)/10^n,然后求除数和被除数的最大公约数(C#最大公约数算法),把被除数和除数同时除以最大公约数,就是你要的结果了