我一直在玩一些 Project Euler 问题,自然而然地遇到了很多需要处理的问题大于 long long 类型的数字。我致力于使用Cocoa和Objective-C(我需要保持敏锐的工作),但找不到一种优雅的方式(阅读:库)来处理这些非常大的数字。

我喜欢使用GMP,但听起来像使用它与Xcode是一个完整的伤害世界。

有没有人知道其他任何选择?

有帮助吗?

解决方案

如果我是你,我会在XCode之外编译 gmp ,只使用 gmp.h libgmp.a(或libgmp.dylib)在我的XCode项目中。

其他提示

尝试将数字存储在数组中。

虽然您必须为所有算术问题编写一些新功能,但这就是我们被告知如何在大学里完成这项功能。

另外,计算的速度也得到了很大提高,因为大数字并不是真正的大数据,而且并非完全没有数字

看看是否有帮助

问候

vecLib 中的

vBigNum 实现1024位整数(有符号或无符号)。这够大吗?

如果您想使用matlab(或任何接近的),您可以查看我的大整数形式的实现(vpi)在文件交换中。

这很简单。分别存储每个数字。添加和减法很简单,只需执行进位操作即可。乘法最好使用卷积,然后是进位。实现divide和mod运算符,然后执行powermod操作,对许多PE问题都有用。权力很容易 - 只需重复平方和乘法,基于指数的二进制表示。

这将让您解决许多PE问题。

我也有明智的想法尝试使用Cocoa / Objective-C的一些Euler Project问题并且发现它令人沮丧。我之前使用的是Java,也许还有一些PHP。我在这个主题中发布了我的确切问题。

我一直考虑使用图书馆作弊这个项目。只需用你需要的东西写一堂课。并且不要害怕使用malloc和uint64_t等。在许多情况下,NSNumber 是一个好主意。

另一方面,存在许多问题,其中明显的解决方案需要巨大到极大的数量,并且诀窍是找到一种方法来解决问题而不使用这些巨大的数字。 (例如,1,000,000阶乘的最后一千位数的总和是多少?)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top