一个素数如果从个位开始,依次去掉一位数字、两位数字、三位数字……直到只剩一个数字,中间所有剩下的数都是素数,则该素数为一个超级素数。例如:2333是一个素数,因为2333,233,23,2都是素数,所以2333是一个四位的超级素数。
请写一个程序,给定一个整数,求大小不超过N的所有超级素数。
一行包含一个整数N(1<=N <= 1,000,000,000)。
第一行,一个整数K,表示N以内超级素数的个数。
接下来的K行,每行包含一个整数,按从小到大的顺序输出所有N以内的超级素数。
1<=N <= 1,000,000,000
100
13
2
3
5
7
23
29
31
37
53
59
71
73
79
#include <bits/stdc++.h>
using namespace std;
int n,s,a;
int prime[1000010],answer[1000010];
bool f(int num) {
if(prime[num]) {
return false;
}
else if(!(num/10)) return true;
else if(f(num/10)) return true;
else return false;
}
int main(){
cin>>n;
prime[1]=1;
for(int i=1;i<=n;i++) {
for(int j=2;j*j<=i;j++) {
if(i%j==0) {
prime[i]=1;
break;
}
}
}
for(int i=1;i<=n;i++) {
if(f(i)) {
s++;
answer[++a]=i;
}
}
cout<<s<<endl;
for(int i=1;i<=a;i++) {
cout<<answer[i]<<endl;
}
return 0;
}