POJ 3126 Prime Path

题意

给出你两个四位素数,保证这个素数不会有前导0(也就是1003起跳)。给定一个操作,在只改变一位的前提下,把当前素数变为另一个四位素数(无前导0)。现在问你至少进行多少次这样的操作才能把一个素数变为另一个。

思路

素数的朴素判断需要O(sqrt(n))的时间复杂度,显然不符合本题要求。不妨使用欧氏筛法,在O(n)的时间复杂度内预处理出10000以内的全部素数,之后O(1)时间解决查询某个数是否为素数的问题。

解决完素数问题,剩下的就是近似于求最短路的BFS过程了。具体的实作方法可以参考下面的代码。

代码

 

Leave a Reply

Scroll to top