1 packagecodeTask_FangFa;2 //5.27 反素数:1.是一个素数。2.其反转过来也是一个素数。3.不能是回文数。
3 public classFanSuShu {4 public static voidmain(String[] args){5 int number= 2;6 for(int count =0;count<100;number++){7 if(isNotHuiWen(number)){8 if(isSuShu(number)){9 if(isFanZhuanSuShu(number)){10 count++;11 if(count%10==0){12 System.out.printf("%8d\n",number);13 }14 else{15 System.out.printf( "%8d", number);16
17 }18 }19 }20 }21
22 }23
24 }25
26 public static boolean isNotHuiWen(int number){ //不是回文数就true
27
28 if(number<10)29 return false;30 else if(number<100){31 int ge = number%10;32 int shi = number/10;33 return !(ge==shi);34 }35 else if(number<1000){36 int ge = number%10;37 int bai = number/100;38 return !(ge ==bai);39 }40 else if(number<10000){41 int ge = number%10;42 int qian = number/1000;43 int shi = (number%100)/10;44 int bai = (number/100)%10;45 return !(ge==qian&shi==bai);46 }47 else if(number<100000){48 int ge = number%10;49 int wan = number/10000;50 int shi = (number%100)/10;51 int qian = (number/100)%10;52 return !(ge==wan&shi==qian);53 }54 return false; //暂时估计前100个回文素数在钱10w个数里了。
55 }56
57 public static boolean isSuShu(int number){ //是素数就true
58 for(int i = 2 ;i<=number/2;i++){59 if(number%i==0)60 return false;61 }62
63 return true;64 }65 //在这里,先反转,再判断是不是素数,可以借用上面的 isSuShu 方法。bingo.
66 public static boolean isFanZhuanSuShu(int number){ //反转过来也是素数的话,true.
67 if(number<100){ //这里不用考虑1-10了,因为1-9肯定是回文数,前面排除了。10肯定不是素数,上面那个方法也排除了。
68 int ge = number%10;69 int shi = number/10;70 int number1 = ge*10+shi;71 returnisSuShu(number1);72 }73 else if (number<1000){74 int ge = number%10;75 int shi = (number%100)/10;76 int bai = number/100;77 int number1 = ge*100+shi*10+bai;78 returnisSuShu(number1);79 }80 else if(number<10000){81 int ge = number%10;82 int shi = (number%100)/10;83 int bai = (number%1000)/100;84 int qian = number/1000;85 int number1 = ge*1000+shi*100+bai*10+qian;86 returnisSuShu(number1);87 }88 else if (number<100000){89 int ge = number%10;90 int shi = (number%100)/10;91 int bai = (number%1000)/100;92 int qian = (number%10000)/1000;93 int wan = number/10000;94 int number1 = ge*10000+shi*1000+bai*100+qian*10+wan;95 return isSuShu(number1); //这里也只是算到99999,也就是说,默认前一百个反素数是在99999前面的,包含它。
96 }97 return false;98 }99
100
101
102 }
package codeTask_FangFa;//5.27 反素数:1.是一个素数。2.其反转过来也是一个素数。3.不能是回文数。public class FanSuShu {public static void main(String[] args){int number= 2;for(int count =0;count<100;number++ ){if(isNotHuiWen(number)){if(isSuShu(number)){if(isFanZhuanSuShu(number)){count++;if(count%10==0){System.out.printf("%8d\n",number);}else{System.out.printf( "%8d", number);}}}}}}public static boolean isNotHuiWen(int number){ //不是回文数就true
if(number<10)return false;else if(number<100){ int ge = number%10; int shi = number/10; return !(ge==shi); } else if(number<1000){ int ge = number%10; int bai = number/100; return !(ge == bai); } else if(number<10000){ int ge = number%10; int qian = number/1000; int shi = (number%100)/10; int bai = (number/100)%10; return !(ge==qian&shi==bai); } else if(number<100000){ int ge = number%10; int wan = number/10000; int shi = (number%100)/10; int qian = (number/100)%10; return !(ge==wan&shi==qian); } return false; // 暂时估计前100个回文素数在钱10w个数里了。 } public static boolean isSuShu(int number){ //是素数就true for(int i = 2 ;i<=number/2;i++){ if(number%i==0) return false; } return true; }//在这里,先反转,再判断是不是素数,可以借用上面的 isSuShu 方法。bingo.public static boolean isFanZhuanSuShu(int number){ //反转过来也是素数的话,true.if(number<100){ //这里不用考虑1-10了,因为1-9肯定是回文数,前面排除了。10肯定不是素数,上面那个方法也排除了。 int ge = number%10; int shi = number/10; int number1 = ge*10+shi; return isSuShu(number1);}else if (number<1000){ int ge = number%10; int shi = (number%100)/10; int bai = number/100; int number1 = ge*100+shi*10+bai; return isSuShu(number1);}else if(number<10000){int ge = number%10;int shi = (number%100)/10;int bai = (number%1000)/100;int qian = number/1000;int number1 = ge*1000+shi*100+bai*10+qian;return isSuShu(number1);}else if (number<100000){int ge = number%10;int shi = (number%100)/10;int bai = (number%1000)/100;int qian = (number%10000)/1000;int wan = number/10000;int number1 = ge*10000+shi*1000+bai*100+qian*10+wan;return isSuShu(number1); //这里也只是算到99999,也就是说,默认前一百个反素数是在99999前面的,包含它。} return false; }}