求两个整数的比例

Ivene 2007-02-02 04:50:17
给出两个值,求他们最接近的比例
比如说 621 : 123 是 6:1
10 跟 5 得到的结果应该是 2:1
怎么做
...全文
381 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxqcn 2007-02-07
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20051109/10/4381241.html
(CSDN的搜索功能比较弱,只好通过 google 才将老帖子翻出来)
liangbch 2007-02-07
  • 打赏
  • 举报
回复
首先转化为一个分子为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;
}




Ivene 2007-02-04
  • 打赏
  • 举报
回复
mathe() 能不能说得清楚点?
WEIJUE 的挺不错的 要是不出现小数就好了
Ivene 2007-02-04
  • 打赏
  • 举报
回复
我自己写了一个你们帮我看看能不能提高精度
function IntToScale($one,$two){
if($one<10 and $two<10)
{
return $one.":".$two;
}
$big = max($one,$two);
$small = min($one,$two);
if($one>$two){
$intNum = intval($big/$small);
return $intNum.":1";
}else{
$intNum = intval($big/$small);
return "1:".$intNum;
}
}
Ivene 2007-02-04
  • 打赏
  • 举报
回复
hehe
wshong 2007-02-02
  • 打赏
  • 举报
回复
看错题目。。。
wshong 2007-02-02
  • 打赏
  • 举报
回复
先求出两数的最大公约数,然后都除以就是不可约了
WEIJUE 2007-02-02
  • 打赏
  • 举报
回复
楼主是要一个类似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);
}
mathe 2007-02-02
  • 打赏
  • 举报
回复
使用连分数来最佳逼进
ahjoe 2007-02-02
  • 打赏
  • 举报
回复
621 : 123 怎么是 6:1
Ivene 2007-02-02
  • 打赏
  • 举报
回复
不过能实现也可以
Ivene 2007-02-02
  • 打赏
  • 举报
回复
不一定
renzaijiang 2007-02-02
  • 打赏
  • 举报
回复
按你的说法就是621 /123+1
是不是都化为1的形式
Ivene 2007-02-02
  • 打赏
  • 举报
回复
自己定

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧