#include <string>
#include <stdio.h>
#include <cmath>
#include <iostream>
using namespace std;
bool is_prime(int m)
{
int k;
k=int(sqrt(double(m)));
int i;
bool temp=true;
if(m==1)
return false;
for(i=2;i<=k;i++)
{
if(m%i==0)
{
temp=false;
break;
}
}
return temp;
}
int lucky(int x,int y) {
int len=0;
for(int k=x;k<=y;k++)
{
int rx=k;
int i=10;
int sum=0;
int square_sum=0;
while(k>=i)
{
sum=rx%10+sum;
square_sum+=(rx%10)*(rx%10);
rx=rx/10;
i*=10;
}
sum=sum+rx;
square_sum+=rx*rx;
if((sum%2!=0 && square_sum%2!=0) || (sum==2 || square_sum==2))
{
if(is_prime(sum) && is_prime(square_sum))
len++;
}
}
return len;
}
//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
int main()
{
cout<<lucky(1000000,50000000)<<endl;
return 0;//main函数方便你自行测试,可不用完成
}
这是幸运数,依旧是一道没有通过的题目,是时间超时,但是我还没有无法解决这个问题,以后会解决的