问题描述
如果一个质数的每一位都是质数,则称之为纯质数
问1-20210605中有多少个纯质数
用线性筛筛出范围内所有质数
在对每个质数进行检测是否为纯质数
//在 1 到 20210605中,有多少个纯质数?
#include<bits/stdc++.h>
using namespace std;
int x=0;
const int N=2e7+200,M=3e8;
int prime[N];
int vis[M];
void oula(int n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i])prime[x++]=i;
for(int j=0;j<x;j++)
{
if(i*prime[j]>n)
break;
vis[i*prime[j]]=1;
if(i%prime[j]==0)
break;
}
}
}
bool check(int n)
{
if(n==2||n==3||n==5||n==7)
return 1;
else
return 0;
}
int main()
{
int n=20210605;
oula(n);
int re=0;
for(int i=0;i<x;i++)
{
int f=1;
int t=prime[i];
while(t)
{
if(!check(t%10))
{
f=0;break;
}
t/=10;
}
if(f)
re++;
}
cout<<re<<endl;
return 0;
}