688 ^ 79 mod 3337 = 1570。
当我在wolfram alpha上尝试这个时,我得到了:
但是当我在Matlab中输入相同内容时,我得到364作为答案。我做错了。
对此的任何启示都将受到赞赏。
答案 0 :(得分:11)
原因是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
答案 1 :(得分:3)
我的计算器给我的答案与Wolfram相同,它也计算了688 ^ 79的值,所以我倾向于认为Wolfram是对的。 你可能已经超出了Matlab的容量这么大的数量,这就是它没有发出正确答案的原因。