Math 获取唯一的数字组合

Math 获取唯一的数字组合,math,numbers,Math,Numbers,如果不使用求幂运算,有没有可能得到一组数字,当它们相加时,总是得到唯一的和 我知道它可以通过幂运算实现(见第一个答案): 但是我想知道,如果没有幂运算,是否有可能。不,您只能使用幂运算,因为较低值的总和必须小于新数字才能唯一:1+2=3

如果不使用求幂运算,有没有可能得到一组数字,当它们相加时,总是得到唯一的和

我知道它可以通过幂运算实现(见第一个答案):


但是我想知道,如果没有幂运算,是否有可能。不,您只能使用幂运算,因为较低值的总和必须小于新数字才能唯一:1+2=3<4,1+2+4=7<8

[编辑:
这是一个外行的解释,当然还有其他的可能性,但没有一个比使用2的指数更有效。

不,你只能使用指数运算,因为较低值的总和必须小于新的数字才能唯一:1+2=3<4,1+2+4=7<8

[编辑:
这是一个外行的解释,当然还有其他的可能性,但没有一个比使用2的指数更有效。

有可能不使用指数(我不是数学专家),但没有任何方式比指数更有效。这是因为每一个可能的值只需要一点存储空间,另外,您可以使用布尔运算符对值进行有用的处理。

有可能不需要指数运算(我不是数学专家),但也没有比指数运算更有效的方法。这是因为每一个可能的值只需要一位存储空间,并且作为一个附加值,您可以使用布尔运算符对值进行有用的处理。

如果您将自己限制为整数,则数字的增长速度必须至少与指数函数的增长速度相同。如果你找到一个增长更快的函数(比如,哦,可能是Ackermann函数),那么由此产生的数字可能也会起作用


对于浮点数,您可以不断添加唯一的素数不可约根(
sqrt(2)
sqrt(3)
sqrt(5)
,…),您将始终得到唯一的结果,直到达到浮点精度的极限。不确定你能从中挤出多少个唯一的数字-也许你应该试试。

如果你把自己限制在整数范围内,那么这些数字的增长速度必须至少与指数函数一样快。如果你找到一个增长更快的函数(比如,哦,可能是Ackermann函数),那么由此产生的数字可能也会起作用


对于浮点数,您可以不断添加唯一的素数不可约根(
sqrt(2)
sqrt(3)
sqrt(5)
,…),您将始终得到唯一的结果,直到达到浮点精度的极限。不确定你可以从中挤出多少个唯一的数字-也许你应该试试。

否。要直接看到这一点,请考虑通过在每一步考虑可能包含为下一个值的最小正整数来建立基值集。下一个要添加的数字必须不同于集合中已存在的所有可能的数字总和(包括空总和,即0),并且不能与已存在的任何数字组合组合以生成重复。所以

{} : all possible sums = {0}, smallest possible next = 1
{1} : all possible sums = {0, 1}, smallest possible next = 2
{1, 2} : all possible sums = {0, 1, 2, 3}, smallest possible next = 4
{1, 2, 4} : a.p.s. = {0, 1, 2, 3, 4, 5, 6, 7}, s.p.n. = 8
{1, 2, 4, 8} ...
当然,我们正在建立二元力量。您可以从{1,2}以外的内容开始,但使用“最小可能的下一个”规则,看看会发生什么:

这个序列的逐项增长速度超过了二进制幂


如果您想要一个好的,您可以编写一个例程,在“和必须是唯一的”约束下,获取一组正整数并确定“可能最小的下一个”正整数。

否。要直接看到这一点,考虑通过在每一步考虑可能包含为下一个值的最小正整数来建立基值集。下一个要添加的数字必须不同于集合中已存在的所有可能的数字总和(包括空总和,即0),并且不能与已存在的任何数字组合组合以生成重复。所以

{} : all possible sums = {0}, smallest possible next = 1
{1} : all possible sums = {0, 1}, smallest possible next = 2
{1, 2} : all possible sums = {0, 1, 2, 3}, smallest possible next = 4
{1, 2, 4} : a.p.s. = {0, 1, 2, 3, 4, 5, 6, 7}, s.p.n. = 8
{1, 2, 4, 8} ...
当然,我们正在建立二元力量。您可以从{1,2}以外的内容开始,但使用“最小可能的下一个”规则,看看会发生什么:

这个序列的逐项增长速度超过了二进制幂


如果您想要一个好的,您可以编写一个例程,它接受一组正整数,并在“和必须唯一”下确定“最小可能的下一个”正整数约束。

这与PHP有什么关系?这与PHP有什么关系?幂运算的问题是,在PHP中工作时,我很快就用完了数字(大约2^1023之后)。我知道有什么诀窍可以克服这一点吗?也许有1000个比特从一开始就不是一个好的解决方案。当提出问题时,请解释您的问题,而不是您在使用特定解决方案时遇到的麻烦。不使用PHP?:)。只是开玩笑。顺便说一句,2^1023是一个很大的数字。@Chad:听起来你走错了路。无论您如何解释二进制数据,在
n
位中最多只能容纳
2^n
个不同的值。如果您真的需要表示这么多唯一的值,您只需要使用位向量或bigint库(请参阅)。幂运算的问题是,在PHP中工作时,我很快就用完了数字(大约在2^1023之后)。我知道有什么诀窍可以克服这一点吗?也许有1000个比特从一开始就不是一个好的解决方案。当提出问题时,请解释您的问题,而不是您在使用特定解决方案时遇到的麻烦。不使用PHP?:)。只是开玩笑。顺便说一句,2^1023是一个很大的数字。@Chad:听起来你走错了路。无论您如何解释二进制数据,在
n
位中最多只能容纳
2^n
个不同的值。如果您真的需要表示这么多唯一的值,您只需要使用位向量或bigint库(请参阅)。请参阅Residuum答案下的问题。请参阅我的问题