Algorithm 编程逻辑:寻找大数的最小方程

Algorithm 编程逻辑:寻找大数的最小方程,algorithm,math,Algorithm,Math,我对数学不太了解,所以我不知道如何开始用谷歌搜索我要找的东西,所以我依靠专家的智慧来帮助我了解我想要的东西 我试图找到一个特别大的数的最小方程串。例如给定的数字 “394020061963944792122790410014360380507973927046544666794829340245721771497221061141426625484915640806627990306816” 最小的方程式是64^64(据我所知)。它只包含5个字节 基本上,程序将颠倒数学,而不是采用表达式并找到答

我对数学不太了解,所以我不知道如何开始用谷歌搜索我要找的东西,所以我依靠专家的智慧来帮助我了解我想要的东西

我试图找到一个特别大的数的最小方程串。例如给定的数字

“394020061963944792122790410014360380507973927046544666794829340245721771497221061141426625484915640806627990306816”

最小的方程式是64^64(据我所知)。它只包含5个字节

基本上,程序将颠倒数学,而不是采用表达式并找到答案,而是采用答案并找到最简单的表达式。简单化是指最小的字符串,而不是真正简单的数学

这已经创建了吗?如果是,我在哪里可以找到它?我正在寻找非常巨大的数字(10^10000000),并将其分解为100个字符的长度。这可能吗?现代CPU/GPU不能进行如此大的计算吗


编辑:

嗯。因此,根据答案判断,找到最小的方程式需要花费太多的时间。到底有没有什么办法,可以用蛮力来完成这项任务,并找到迄今为止发现的最小的一个

例如,给定一个超大型的数字。有时,取数字的平方根将导致表达式小于数字本身


至于它将从什么表达式开始,那么它自然会尝试最小的表达式。我肯定有很多数学知识我都不知道,但是让一个数字变小的方法之一就是幂。

看起来你基本上是想对任意大的数字进行因式分解。这是一个非常困难的问题,它实际上是现代密码学的基石。

这里有一个很好的程序可以做到这一点:
无限多素数的存在意味着总有一些不能通过因子分解来简化的数。对不起,你所要求的是不可能的。

我问了一个问题“这样做有什么意义”,因为我不知道你是从数学的角度来看这个问题,还是从大量因子的角度来看这个问题

由于其他答案考虑了因子分解的观点,我将从数学的角度来看。特别是,您描述的问题是一个可压缩性问题。这里有一个数字,并希望用最小的算法来描述它。高度随机数的可压缩性很差,要描述它们,你要么写出所有的数字,要么描述一个仅略小于数字本身的确定性算法

目前还没有一个通用的数学定理可以确定一个数的表示是否是该数可能的最小值(尽管通过理解香农的信息论可以发现下限)。(我说的是一般定理,因为存在特殊情况)


正如你所说,你不懂很多数学,这可能对你来说不是一个有用的答案…

只需在你的Google hopper中添加另一个关键字,请参阅。字符串的Kolmogorov复杂性是输出字符串的最小图灵机的大小,给定一个空输入。这是一种形式化你所追求的东西的方法。然而,计算给定字符串的Kolmogorov复杂性是一个不可判定的问题:)

希望这有帮助


这似乎真的是一个数学问题,而不是编程或计算机科学问题。你应该在

上问这个问题。你正在做一种无损压缩,而无损压缩对随机数据不起作用。相反,假设您有一种将N位数字压缩为N-1位数字的方法。在这种情况下,需要将2^N个值压缩为2^N-1个指定,即每个指定的平均值为2个,因此无法解压缩平均指定。无损压缩在相对结构化的数据上工作得很好,我们可能得到的数据被压缩得很小,而我们得不到的数据实际上增长了一些


它比这稍微复杂一点,因为压缩部分是通过允许每个字符有更多的信息。(涉及数字和运算符的N字符序列的数量比仅涉及数字的数量要多。)不过,你不会得到无损压缩,平均而言,这比用二进制写整数要好。

虽然你的问题还不清楚,但也许你在追求的是无损压缩

编辑:

有人推测,找到一个“短”形式与保理问题有某种联系。我不相信这是真的,除非你的定义需要一个产品作为答案。考虑下面的伪算法,它只是草图,并没有尝试优化。

如果“shortest”是一个定义良好的概念,那么通常通过使用小整数到大幂得到“short”表达式。如果N是我的整数,那么我可以在附近找到一个0 mod 4的整数。有多近?在+/-2范围内。我可以找到一个+/-4范围内的整数,即0 mod 8。等等这就是2的幂。我可以用3,5,7等做同样的练习。例如,我们可以很容易地找到最近的整数,它同时是2,3,5,7,11,13和17的幂的乘积,称之为N_1。现在计算N-N_1,称之为d_1。也许d_1是“短的”。如果是这样,那么N_1(表示为素数的幂)+d_1就是答案。如果不是,则递归查找d_1的“短”表达式


我们还可以选择可能比第一个选择更远的整数;尽管差值d_1更大,但它的形式可能更短。

确切地说,你为什么要这样做?我看不出有什么意义。你说的“方程式”是什么意思?假设你有(你的号码)+1。你想要吗