求两个整数的比例
给出两个值,求他们最接近的比例
比如说 621 : 123 是 6:1
10 跟 5 得到的结果应该是 2:1
怎么做
[解决办法]
621 : 123 怎么是 6:1
[解决办法]
使用连分数来最佳逼进
[解决办法]
楼主是要一个类似4舍5入的东西吗?
#include "stdio.h "
void display(int a,int b)
{
if((a/b) <=(2*a+b)/(2*b))
printf( "%d:1\n ",(2*a+b)/(2*b));
else
printf( "%d:1\n ",(a/b));
}
void main ()
{
int a=54;
int b=10;
display(a,b);
}
[解决办法]
首先转化为一个分子为1的一对分数,一个是下限,一个是上限:
如 0.1415926 的下限是 (1/8), 上限是 (1/7),然后逐步缩小上下限的范围
示例:
下限和上限初值: low= a/b, high=c/d, x/y:要转化的分数
循环:
while (1)
{
mid= (a+c)/(b+d);
if (mid > x/y)
high= mid
else
low=mid
if ( mid 的达到要求(即误差小于指定值,而分子和分母不大于期望的数)
break;
}
[解决办法]
http://topic.csdn.net/t/20051109/10/4381241.html
(CSDN的搜索功能比较弱,只好通过 google 才将老帖子翻出来)