題目描述
如果一個正整數只有?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;
}