这个函数有没有精度损失?

sherrik 2009-03-07 02:06:59

int min(int a,int b)
{
int div,temp,c,min;
div=a;
temp=b;
while(div%temp)
{
c=div%temp;
div=temp;
temp=c;
}
min=a*b/temp;
return (min);
}

求两个数的最小公倍数,先求出最大公约数,再两个数相乘除以他们的最小公倍数。
acm提交一直不正确,后来改写成以下代码就可以了。请问是不是因为精度的关系呢?
int yue(int a,int b)
{
int t;
while(a%b)
{ t=a%b;
a=b;
b=t;
}
return(b);
}
int bei(int a,int b)
{
return a/yue(a,b)*b;
}
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sherrik 2009-03-07
  • 打赏
  • 举报
回复
谢谢!
arong1234 2009-03-07
  • 打赏
  • 举报
回复
应该不是精度问题,你定义的变量太多,代码太乱,而且,a*b/tmp会导致可能的溢出,你应该a/tmp *b

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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