值得记住素数测试吗?

Is it worth memoising a primality test?

本文关键字:测试 值得      更新时间:2023-10-16

我还有另一个回溯挑战,我必须得到所有可能的素数组合,这些组合加起来就是一个特定的数字。我已经使用维基百科的通用算法完成了任务,但是对于数字 100,运行了一个多小时,而且到下课仍然没有完成。我想知道:记忆(你怎么拼写?)会显着提高算法的性能(比如,它会让它明显更快)吗?我正在使用c ++,并且该函数被调用了大量次。我正在使用递归回溯,我似乎记得对于简单的问题,它大致是O(n!)。

在函数外部创建一个数组,检查主要性和可从该函数访问。全局或静态,具体取决于使用的语言。该数组将满足所有找到的主号码。

If the number in question is in the array, return true. 
if number is less or equal than squared max number in the array, return false.
Check for divisibility for all known primaries
if the number is primary, write it into array and return true
return false

这种添加非常简单。这样做并检查更改的时间。