Maple 14有isprime命令,用于测试数字是否为素数。允许将表达式写为输入数据,因此我们可以编写下一个命令:
isprime(2 ^(3 ^ 43-5)-1);
但是在尝试运行测试时出现以下错误:
错误,数字异常:溢出
所以我的问题是如何避免这种溢出错误?我应该更改默认堆栈大小,如果是这样,那么在win 7终极上如何做到这一点?
答案 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
时的情况有关。