题目大意:
给出一个整数n,要求输出所有n位超级质数。超级质数的定义为,一个“依次去掉最右边一位后依然为质数”的质数。
思路:
一个n位质数去掉最右边一位依然为质数,说明其一定从n-1位质数演变而来。通过广搜按位数从小到大的顺序搜索到第n位即可。
代码:
/* ID: lujunda1 LANG: C++ PROG: sprime */ #include#include #include #include using namespace std; bool prime(int n) //判断参数n是否为素数。 { if(n<2) return false; for(int i=2;i<=sqrt(double(n));i++) if(n%i==0) return false; return true; } int bfs(int n) //搜索n位超级质数。 { queue q; q.push(0); int temp=0; while(temp++