问题描述:
编写程序找出1-1000之间的所有可逆素数(可逆素数是指一个素数的各位数值顺序颠倒后得到的数仍为素数,如133、311)。
public class Main {
public static void main(String[]Args){
int count=0; //计数
for(int i=1 ; i<1000 ; i++){ //设置范围
if(isPrimeNum(i)&&isPrimeNum(fanxuNum(i))){ //输出条件:本身和反序数都是素数
System.out.printf("%3d ",i);
count++;
if(count%10==0){ //满十个数 换行
System.out.println();
}
}
}
}
public static boolean isPrimeNum(int a){ //判断是否是素数
for(int i=2 ; i<=Math.sqrt(a) ; i++){
if(a%i==0){
return false;
}
}
return true;
}
public static int fanxuNum(int a){ //求反序数
int length1 = (a+"").length();
if(length1==1){
return a;
}
if(length1==2){
int x = a/10;
int y = a%10;
return y*10+x;
}
else{
int x = a/100;
int y = a/10%10;
int z = a%10;
return x+y*10+z*100;
}
}
}