#include <string>
#include <stdio.h>
#include <cmath>
#include <iostream>
using namespace std;
bool flag[800];
void primmake() //使用筛选法构造素数表
{
memset(flag,0,sizeof(flag));
flag[1]=1;
for(int i=2;i<=800;i++)
{
if(!flag[i]){
for(int j=2;i*j<=800;j++)flag[i*j]=1;
}
}
}
int sumdigit(int x){
int sum=0;
while(x){
sum+=x%10;
x/=10;
}
return sum;
}
int sqdigit(int x){
int sum=0;
while(x){
sum+=(x%10)*(x%10);
x/=10;
}
return sum;
}
bool luck(int x){
int sum0=sumdigit(x);
int sum1=sqdigit(x);
if(!flag[sum0] && !flag[sum1])return 1;
return 0;
}
int lucky(int x,int y) {
int cnt=0;
for(int i=x;i<=y;i++){
if(luck(i))cnt++;
}
return cnt;
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
int main()
{
//main函数方便你自行测试,可不用完成
primmake();
cout<<lucky(1,20)<<endl;
return 0;
}
庞果网-在线编程挑战 幸运数 简单数论.......
最新推荐文章于 2018-03-20 20:04:57 发布