反素数java_【Java自学】 反素数

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;        }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值