4

688^79 模 3337 = 1570。

当我在 wolfram alpha 上尝试这个时,我得到了: 在此处输入图像描述

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

在此处输入图像描述

对此的任何说明将不胜感激。

4

2 回答 2

11

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

要获得正确的结果,您可以使用符号变量,这可以确保您不会失去准确性:

>> x = sym('688^79');
>> y = sym('3337');
>> mod(x, y)
ans =
1570
于 2015-04-26T23:32:40.670 回答
3

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

于 2015-04-26T23:28:00.130 回答