【问题描述】
如果一个正整数只有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到20210605中,有多少个纯质数?
答案:1903
#include <iostream>
#include<algorithm>
using namespace std;
bool a[20210610] = {false};
bool solve(int num)
{
while (num)
{
int temp = num % 10;
if (temp== 4 || temp == 6 || temp == 8 || temp == 9|| temp ==0|| temp==1)
return false;
num /= 10;
}
return true;
}
int main()
{
for (int i = 2; i <= 20210605; i++)
{
if (a[i] == false)
{
for (int j = 2 * i; j < 20210605; j += i)
a[j] = true;
}
}
int ans = 0;
for (int i = 2; i <= 20210605; i++)
{
if (a[i] == false && solve(i))
ans++;
}
cout << ans;
}