如何避免数字异常:Maple 14溢出?

时间:2011-09-26 11:02:46

标签: exception overflow maple

Maple 14有isprime命令,用于测试数字是否为素数。允许将表达式写为输入数据,因此我们可以编写下一个命令:

  

isprime(2 ^(3 ^ 43-5)-1);

但是在尝试运行测试时出现以下错误:

错误,数字异常:溢出

所以我的问题是如何避免这种溢出错误?我应该更改默认堆栈大小,如果是这样,那么在win 7终极上如何做到这一点?

1 个答案:

答案 0 :(得分:1)

由于3 ^ 43-5是复合的,因此2 ^(3 ^ 43-5)-1也是如此。查看Mersenne primes的维基百科页面。你可以在Maple中快速得到这个结果。所以,如果这就是你想要的,那么你就完成了。

> isprime( 3^43-5 );
                         false

现在,假设你有一个大小与3 ^ 43相当的素数p。让我们说,下一个素数高于那个。

nextprime( 3^43-5 );
                 328256967394537077679

numtheory[mersenne]( nextprime( 3^43-5 ) );
                          FAIL

好的,这太不幸了。

尝试将isprime应用于2 ^(10 ^ 6 + 3)-1。 (由于枫树程序的正常评估规则,isprime得到扩展的参数,所以没有机会看到特殊形式并且只针对10 ^ 6 + 3进行更便宜的测试。这就是numtheory[mersenne]是什么for。)你会等一会儿。现在想象一下isprime处理大约10 ^ 11倍的数字需要多长时间,这与你使用2^nextprime(3^43-5)-1时的情况有关。