题目描述
如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。
前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。
如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,37 都是纯质数,而 11,13,17,19,29,31 不是纯质数。当然 1,4,35 也不是纯质数。
请问,在 1 到 202106052 中,有多少个纯质数?
先判断“纯质数”(每一位都由2,3,5,7组成的数),再从纯质数中找质数,就不会超时了
#include<iostream>
#include<cmath>
using namespace std;
int ans;
int prime(int x)
{
if(x<2) return 0;
if(x==2) return 1;
for(int i=2; i<=sqrt(x); ++i)
{
if(x%i==0) return 0;
}
return 1;
}
int chun_prime(int x)
{
while(x)
{
int temp = x%10;
if(temp!=2 && temp!=3 && temp!=5 &&temp!=7)
{
return 0;
}
x /= 10;
}
return 1;
}
int main()
{
for(int i=2; i<=20210605; ++i)
{
if(chun_prime(i) && prime(i)) ans++;
}
cout<<ans;
return 0;
}

![[操作系统] 策略模式进行日志模块设计](https://i-blog.csdnimg.cn/img_convert/f3d87f4f3f238a8f52465eab5034e387.gif)










![NSSCTF [HNCTF 2022 WEEK4]](https://i-blog.csdnimg.cn/img_convert/a2cba718ea5b9cf26a7432739eb8b5de.png)





