为什么 Matlab Mod 与 Wolfram Alpha 不同

Why is Matlab Mod different from Wolfram Alpha

688^79 mod 3337 = 1570.

当我在 wolfram alpha 上尝试这个时,我得到:

但是当我在 Matlab 中输入同样的东西时,我得到 364 作为答案。我一定是做错了什么。

如能提供任何信息,我们将不胜感激。

我的计算器向我发送了与 Wolfram 相同的答案,它还计算了 688^79 的值,所以我倾向于相信 Wolfram 是正确的。 您可能已经用如此巨大的数字超出了 Matlab 的容量,这就是它没有发送正确答案的原因。

原因是Matlab默认使用double浮点运算。像 688^79 这样大的数字不能准确表示为 double。 (可以准确表示为 double 的最大整数是 of the order of 2^53)。

要获得正确的结果,您可以使用 symbolic variables,以确保您不会失去准确性:

>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570