问题 b: 【搜索】素数路
题目:
已知一个四位的素数,要求每次修改其中的一位,并且要保证修改的结果还是一个素数,还不能出现前导零。你要找到一个修改数最少的方案,得到我们所需要的素数。
例如把1033变到8179,这里是一个最短的方案:
1033
1733
3733
3739
3779
8779
8179
修改了6次。
输入
1行,两个四位的素数(没有前导零),表示初始数和目标数。
输出
一个数,表示最少的操作次数。如果不可能,输出“Impossible”。
#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
int n,m;
int prime[20000];
int a[20000];
int visit[20000];
void getprime()
{
int cnt=0;a[1]=0;
for(int i=2;i<20000;i++)
{
if(a[i]==0)prime[cnt++]=i;
for(int j=0;j<cnt&&prime[j]*i<20000;j++)
{
a[i*prime[j