我们称一个数是质数,而且数位中出现了 55 的数字是有趣的。例如 5, 59, 4575,59,457 都是有趣的,而 15, 715,7 不是。求 11 到 100000100000 中有趣的数的个数。
这个题超难受的就是逐位判断的语句把握不好。其实很简单,先把数保存下来再取余、整除操作。还是要多练习。
下面是AC代码:
#include <bits/stdc++.h>
using namespace std;
//答案:3282
int sum=0;
int a[100000];
int prime(){
for(int i=2;i<=100000;i++){
for(int j=2;j*j<=i;j++){
if(i%j==0){
a[i]=0;
break;
}
a[i]=1; //是质数
}
}
}
bool judge(int i){
while(i){
int t=i%10;
if(t==5)
return true;
i=i/10;
}
return false;
}
int main(){
for(int i=1;i<=100000;i++)
a[i]=i;
a[1]=0; //不是质数
a[2]=a[3]=1; //是质数
prime();
for(int i=1;i<=100000;i++){
if(a[i]==1){
if(judge(i)){
sum++;
}
}
}
printf("%d",sum);
return 0;
}