小测试 小测试

Bowdom 2002-01-06 07:27:29
已知: DWORD a, DWORD b, a > b, b 不能被 a 整除 ( 即 a/b 不是整数 )
求: 求与 b 最接近的一个DWORD c , 使得 a > c, b > c 且 c 能被 a 整除 ( 不能用循环和递归, 答对者有奖, 提供三天的免费果汁, 有鲜橙啦 菠萝啦 荔枝啦 呵呵 )
...全文
161 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxjddd 2002-01-08
  • 打赏
  • 举报
回复
a=(2^7)*(3^3)*(5^2)
cxjddd 2002-01-08
  • 打赏
  • 举报
回复
bowdom,你的题目有错!是a被c整除,c将a整除。
cxjddd 2002-01-08
  • 打赏
  • 举报
回复
mathe 2002-01-08
  • 打赏
  • 举报
回复
呵呵,这么具体的一个问题呀,其实24*60*60也不大,也就86.4K,干脆事先全部计算出来,以后查表就行了,速度更快,这下倒真不用循环了。
Bowdom 2002-01-08
  • 打赏
  • 举报
回复
有收获 多谢各位了!
Bowdom 2002-01-07
  • 打赏
  • 举报
回复
多谢了! 难道真的没有一个式子能直接算出结果 能不能给出一个证明先.
mathe 2002-01-07
  • 打赏
  • 举报
回复
应该return a/i;
最好还是事先做一下测试
如果b*b>a用上面的方法比较好,
不然还是直接查找
if(b*b>=a){
for(i=(a+b-1)/b;;i++)if(a%i==0)return a/i;
}else{
for(i=b-1;;i--)if(a%i==0)return i;
}
mathe 2002-01-07
  • 打赏
  • 举报
回复
循环总是要用的,不用是不可能的啦
int i;
ASSERT(b>1);
for(i=(a+b-1)/b;;i++)if(a%i==0)break;
return i;
Bowdom 2002-01-07
  • 打赏
  • 举报
回复
:MicroMouse
c能被a整除 就是 a/c 为一整数呀!

原来的问题是这样的:
已知 a = 24(小时)*60(分)*60(秒), 从外部传来一个时间值 b (秒),
b < a, 其实 a/b 是不是整数也不知道, 现在就是要找一个和 b 最接近的
整数 c , 使得 c < a 且 a/c 是整数.
用循环很简单, 我是想有没有一个式子直接就能算出结果.
intfree 2002-01-07
  • 打赏
  • 举报
回复
对于你的问题,

因为SecsPerDay=24*60*60=2^7*3^2*5^2
也就是说约数只有(7+1)*(2+1)*(2+1)=8*3*3=72个,
你要找的c就是这72个中的一个,
你可以把这72个数先求出来,放在一个数组里。

至于怎么找,循环就可以了,如果要求更高,就用二分吧,
intfree 2002-01-07
  • 打赏
  • 举报
回复
判断一个数是不是质数,到还有些高效的概率算法(好像也有一些高效,非概率的)

但要把一个大数分解,却是还没有找到任何有效算法。

而你的要求却比这个还高——居然循环都不能用。

我看与歌德巴赫猜想到关系不大,不过难度嘛,我怀疑是有过之而无不及啊,

现在的密码学,好像就是把砝码压在“没有找到大数分解的有效算法”上。
Bowdom 2002-01-07
  • 打赏
  • 举报
回复
:pugong
a=17 b=8
您的程序是不是会死循环?

i == 17 || i == 1时不就跳出来了吗?


歌德巴赫猜想?! 不会吧! 我也只是根据我碰到的问题变一下提出来
看来不用循环是不行的了
pugong 2002-01-07
  • 打赏
  • 举报
回复
To mathe():
a=17 b=8
您的程序是不是会死循环?

To Bowdom
如果用如您所想不用循环,假如a是一个质数,如何判定?
如果可以,也许歌德拔河猜想就没问题了。
Bowdom 2002-01-07
  • 打赏
  • 举报
回复
呀!(惨叫一声) 咳咳! 哦 是这样的吗 反正就是 a/c 为整数啦 这个概念我记不清了.
duodonglai 2002-01-07
  • 打赏
  • 举报
回复
好像“c能被a整除”表示的是从c/a为整数。^_^
intfree 2002-01-06
  • 打赏
  • 举报
回复
如果a很大,b = a - 1,

则这个算法可以用于分解一个大数为两个数的积,

哇,“不用循环和递归”,这不是说要限制算法的时间复杂度吧,

看来这个果汁是吃不成了,

MicroMouse 2002-01-06
  • 打赏
  • 举报
回复
“使得 a > c, b > c 且 c 能被 a 整除 ”
既然a > c ,何来c能被a整除?
hch_d 2002-01-06
  • 打赏
  • 举报
回复
哦……

33,009

社区成员

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

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