51Nod 3016 Prime Path

素数变换问题的解决方案
该博客探讨了一种数学问题,即如何通过最小次数的操作将一个素数变换为另一个素数。文章介绍了一个C++程序,该程序使用埃拉托斯特尼筛法找出素数,并通过广度优先搜索算法寻找从一个素数到另一个素数的最短变换路径。题目中给出了若干示例输入和输出,展示了解决方案的有效性。博客主要关注算法设计和优化,适合对数学和算法感兴趣的读者。

阿P给阿K出了一个难题,他给阿K两个素数A,B,保证A,B的位数相同且为4位或5位。

阿K只能对A作一种操作,即将其中一位数字改成另一个数字,要求每次操作后得到的数还是一个素数,问最少多少次可以从A变到B

输入

第一行一个整数n,代表有n组数据
对于每组数据,输入一行两个四位或五位素数A,B

输出

对于每组数据输出一行,表示最少的操作次数
无解输出No solution

数据范围

对于50%的数据:A,B为四位素数
对于100%的数据: A,B的位数不超过五位,n<=20

输入样例

输入样例1:

1
1033 8179

输入样例2:

1
1373 8017
输入样例3:
1
1033 1033

输出样例

输出样例1:
6
输出样例2:
7
输出样例3:
0

参考答案

#include<stdio.h>
#include<set>
#include<iostream>
#include<stack>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
#incl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值