题目描述
借用了BFS的思想,好像有点复杂了..
注意压队列的位置,之前先压再判断会报错段错误。
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
queue<int> q;
const int N = 105;
bool isPrime(int x){
if(x < 2) return false;
for(int i = 2;i <= x/i; i++){
if(x%i==0) return false;
}
return true;
}
int bfs(){
while(q.size()){
int x = q.front();
q.pop();
for(int i = 1;i <= 9; i++){
int t = x*10 + i;
if(isPrime(t)) return t;
else q.push(t);
}
}
return 0;
}
void Bfs(int x){
q.push(x);
int res = bfs();
if(res) printf("%d\n",res);
}
int main(){
int T;
cin>>T;
while(T--){
int x;
scanf("%d",&x);
while(q.size()) q.pop();
Bfs(x);
}
return 0;
}