问题 b: 【搜索】素数路

该问题要求从一个四位素数通过修改一位数变成另一个四位素数,且每次修改后的数仍是素数,不包含前导零。例子中展示了从1033到8179的最短修改路径,共需要6步。输入为两个四位素数,输出为最少操作次数,若无法实现则输出'Impossible'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值