标签: smooth-numbers

棘手的谷歌面试问题

我的一个朋友正在面试一份工作.其中一个面试问题让我思考,只想得到一些反馈.

有2个非负整数:i和j.给定以下等式,找到(最优)解决方案以对输出进行排序的方式迭代i和j.

2^i * 5^j
Run Code Online (Sandbox Code Playgroud)

所以前几轮看起来像这样:

2^0 * 5^0 = 1
2^1 * 5^0 = 2
2^2 * 5^0 = 4
2^0 * 5^1 = 5
2^3 * 5^0 = 8
2^1 * 5^1 = 10
2^4 * 5^0 = 16
2^2 * 5^1 = 20
2^0 * 5^2 = 25
Run Code Online (Sandbox Code Playgroud)

尽我所能,我看不到一个模式.你的意见?

algorithm optimization hamming-numbers smooth-numbers

167
推荐指数
6
解决办法
3万
查看次数

16
推荐指数
1
解决办法
1824
查看次数

使用一组素数以升序生成整数

我有一组素数,我必须使用递增顺序的那些素因子生成整数.

例如,如果集合是p = {2,5}那么我的整数应该是1,2,4,5,8,10,16,20,25 ......

有没有有效的算法来解决这个问题?

algorithm primes hamming-numbers smooth-numbers

11
推荐指数
2
解决办法
4931
查看次数

找到不小于N的最小常数

常数是均匀分配60的幂的数字.例如,60 2 = 3600 = 48×75,因此48和75都是60的幂的除数.因此,它们也是常规数.

这是四舍五入到下一个幂的延伸.

我有一个整数值N,它可能包含大的素因子,我想把它四舍五入到只由小素因子组成的数字(2,3和5)

例子:

  • f(18) == 18 == 21 * 32
  • f(19) == 20 == 22 * 51
  • f(257) == 270 == 21 * 33 * 51

找到满足此要求的最小数字的有效方法是什么?

涉及的值可能很大,所以我想避免枚举从1开始的所有常规数字或维护所有可能值的数组.

algorithm math prime-factoring hamming-numbers smooth-numbers

9
推荐指数
3
解决办法
1681
查看次数

如何找到仅是 2、3 和 5 的幂的倍数的所有数字的列表?

我正在尝试生成可以用表格表示的所有倍数的列表2^a*3^b*5^c,其中 a、b 和 c 是整数。我尝试了以下方法,

[ a * b * c | a <- map (2^) [0..], b <- map (3^) [0..], c <- map (5^) [0..] ] 
Run Code Online (Sandbox Code Playgroud)

但它只列出了 5 的幂,而从未列出 2 或 3。

编辑:抱歉,看来我没有足够澄清这个问题。我想要的是一个有序的无限列表,虽然我可以对有限列表进行排序,但我觉得好像可能有一个更有效的解决方案。

haskell hamming-numbers smooth-numbers

5
推荐指数
1
解决办法
1858
查看次数