这是那些困难的算法之一,只是因为有很多选择。想象一个数字“N”和一组小于 10 的素数,即 {2, 3, 5, 7}。目标是不断除以 N 直到我们达到 1。如果在任何步骤 N 都不能被任何给定的素数整除,那么您可以进行以下操作:
i) N= N-1 或 ii) N=N+1
这将确保 N 是偶数,我们可以继续。
应在使用最少操作数的同时实现该目标。
请注意,这听起来可能微不足道,即您可以在算法中实施一个步骤,即“如果 N 可被任何素数整除,则除以它”。但这并不总是产生最佳解决方案
例如,如果 N=134:现在 134 可以被 2 整除。如果你除以 2,你会得到 67。67 不能被任何素数整除,所以你做一个运算,N 将是 66/68,这两个都需要另一个运算。所以总共2次操作。
或者,如果 N=134 并且您执行操作 N=N+1 即 N=135,在这种情况下,达到 1 所需的总操作数为 1。所以这是最佳解决方案