1

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

素数(2^(3^43-5)-1);

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

错误,数值异常:溢出

所以我的问题是如何避免这个溢出错误?我应该更改默认堆栈大小吗?如果是这样,如何在 win 7 Ultimate 上执行此操作?

4

1 回答 1

1

由于 3^43-5 是复合的,所以 2^(3^43-5)-1 也是复合的。请参阅有关梅森素数的维基百科页面。你可以在 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。(由于 maple 程序的正常评估规则,isprime得到扩展的参数,所以没有机会看到特殊的形式,只针对 10^6+3 进行更便宜的测试。这就是它的numtheory[mersenne]目的。)你会等一会儿。现在想象一下isprime处理大约 10^11 倍大的数字需要多长时间,这与使用2^nextprime(3^43-5)-1.

于 2011-09-29T01:43:42.710 回答