modulo - C++中如何求大数除法的余数?

标签 modulo

我有一个关于 C++ 模数的问题。我想要做的是除以一个非常大的数字,例如 M % 2,其中 M = 54,302,495,302,423。然而,当我去编译时,它说这个数字对于 int 来说太“长”了。然后,当我将其切换为 double 时,它会重复相同的错误消息。有没有一种方法可以做到这一点,我可以获得这个非常大的数字的剩余部分,或者可能是一个更大的数字?感谢您的帮助,非常感谢。

最佳答案

您可以尝试将数字存储在“long long”(64 位整数值)中,但请注意,如果您的应用程序是多线程并在 32 位 CPU 上运行,则在读取时需要在线程之间进行同步/写入该值,因为读/写需要 2 个时钟周期。

或者,尝试 bignum library

如果你想让事情变得有趣,如果你只做模 2,你可以检查最低位并得到答案。如果您只执行模 255,则可以采用最低 8 位(无符号字符)并对它们进行运算。如果您只对 65535 进行模运算,则可以采用最低 16 位(无符号短整型)并对它们进行运算。

关于modulo - C++中如何求大数除法的余数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440093/

相关文章:

modulo - 将两个数字加到数字末尾以计算特定模数的算法?

java - 为什么对非整数值使用模会失去浮点精度?

c++ - 如何在处理负数的 C/C++/Obj-C 中编写模 (%) 运算符

javascript - JavaScript 中的动画与模数

c++ - 无法在 C++ 中为 SAFECRAC SPOJ 正确使用 MODULO 运算?

python - 如何检查时间戳是否是整整一个小时

c++ - 如何使用一个很长的整数来计算 C++ 中的值?

assembly - 如何在 MIPS 汇编中找到没有除法或模运算符的余数

java - 为什么模 3 效率低下?

c++ - 根据Fermat的小定理未获得预期的输出