可逆素数是指一个素数的各位数字顺序倒过来构成的数依然是素数。
#include <bits/stdc++.h>
using namespace std;
int fanzhuan(int a) //翻转数字
{
return ((a / 1000) % 10) * 1
+ ((a / 100) % 10) * 10
+ ((a / 10) % 10) * 100
+ ((a / 1) % 10) * 1000;
}
int main()
{
int i, j;
char number[10000] = {0}; //将数组里的所有值都初始化为0
for(i = 2; i < 100 + 1; i++)
{
while(number[i]){ //当number[i]=1时就让i++,减少时间消耗。
i++;
}
for(j = i * i; j < 10000; j += i){ //平方的数都不是素数,将不是素数的都标位1;
number[j] = 1;
}
}
for(i = 1000; i < 10000; i++){
if(!number[i] && !number[fanzhuan(i)]){ //这里为了判断逆反和正的都为素数。
printf("%d\n", i); //返回素数答案
}
}
return 0;
}