我一直在解决一些Project Euler问题,并且自然会遇到很多需要处理大于long long
类型数字的问题。我致力于使用Cocoa和Objective-C(我需要保持敏锐的工作),但找不到一种优雅的方式(阅读:库)来处理这些非常大的数字。
我喜欢使用GMP,但听起来像使用它与Xcode是一个完整的伤害世界。
有没有人知道其他任何选择?
答案 0 :(得分:3)
如果我是你,我会在XCode之外编译 gmp ,只使用 gmp.h 和 libgmp.a(或libgmp.dylib)在我的XCode项目中。
答案 1 :(得分:1)
尝试将数字存储在数组中。
虽然您必须为所有算术问题编写一些新功能,但这就是我们被告知如何在大学中完成这些功能。
另外,计算的速度也得到了很大提高,因为大数字并不是真正的大数据,而且并非完全没有数字
看看是否有帮助
问候
答案 2 :(得分:1)
vBigNum
中的 vecLib
实现了1024位整数(有符号或无符号)。这够大吗?
答案 3 :(得分:0)
如果您想使用matlab(或任何接近),您可以在文件交换中查看我的大整数形式(vpi)的实现。
这很简单。分别存储每个数字。添加和减法很简单,只需执行进位操作即可。乘法最好使用卷积,然后是进位。实现divide和mod运算符,然后执行powermod操作,对许多PE问题都有用。权力很容易 - 只需重复平方和乘法,基于指数的二进制表示。
这将让您解决许多PE问题。
答案 4 :(得分:0)
我也有明智的想法尝试使用Cocoa / Objective-C的一些Euler Project问题并且发现它令人沮丧。我之前使用的是Java,也许还有一些PHP。我发布了my exact problem in this thread.
答案 5 :(得分:0)
我一直考虑使用图书馆作弊这个项目。只需用你需要的东西写一堂课。并且不要害怕使用malloc和uint64_t等。在许多情况下,NSNumber 不是一个好主意。
另一方面,存在许多问题,其中明显的解决方案需要巨大到极大的数量,并且诀窍是找到一种方法来解决问题而不使用这些巨大的数字。 (例如,1,000,000阶乘的最后一千位数的总和是多少?)