USACO-Section1.5 sprime[深搜]

来源:互联网 发布:爱国治民能无知乎 编辑:程序博客网 时间:2024/06/05 07:21

题目大意:

,举例来说: 7331是质数; 733是质数; 73 是质数; 7 也是质数。
7331 被叫做长度 4 的特殊质数。 写一个程序对给定的数目 N (1<=N<=8),求出所有的特殊质数。 数字1不被看作一个质数。

样例输入:

4

样例输出:

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

题解:

用深搜,一位一位的判断。长度够了就输出,可以控制大小。

C++/*ID:mujinui1PROG:sprimeLANG:C++*/#include<fstream>#include<cmath>using namespace std;   ifstream fin ("sprime.in");     ofstream fout ("sprime.out");int n;bool check(int d){     int i;     for (i=2;i<=(int)sqrt(d);i++)         if (d%i==0) return true;     return false;}void dfs(int s,int k){     int i;     if (check(s)) return;     if (k==n) fout<<s<<endl;        else for (i=1;i<=9;i+=2) dfs(s*10+i,k+1);}int main(){    int i,a[5];   fin>>n;    a[1]=2;a[2]=3;a[3]=5;a[4]=7;    for (i=1;i<=4;i++) dfs(a[i],1);    return 0;}