特殊质数

来源:互联网 发布:sqlserver 临时表 编辑:程序博客网 时间:2024/05/18 03:41

题目描述
7331是一个特殊的质数,因为我们去掉个位得到的733是一个质数;再次去掉个位得到的73又是一个质数;再去掉个位后得到的7依然是一个质数。对于形似这种的质数,我们称呼它为特殊质数。

写一个程序对给定的待求特殊质数的位数 N (1≤N≤8)求出所有对应位数的特殊质数(注意:数字1不被看作一个质数)。

输入包括一个整数,为待求特殊质数的位数 N。

输出长度为N的特殊质数列表,每行一个。

样例输入

4
样例输出

2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393

思路:由高位向低位枚举,简单的深搜

#include"iostream"using namespace  std;int n;bool IsPrime(int x){    for(int i=2;i*i<=x;i++)    {        if(0==x%i)        return false;    }    return true;} void dfs(int sum,int cur){    if(cur==n) cout<<sum<<endl;    for(int i=1; i<=9; i++)    {        if(i%2==0) continue;        int asum= sum*10+i;        if(IsPrime(asum))         {            dfs(asum,cur+1);        }      }}int main(){    while(cin>>n)    {        dfs(2,1);        dfs(3,1);        dfs(5,1);        dfs(7,1);    }    return 0;}