4.10回文素数是指一个数同时为素数和回文数 。例如,131是一个素数,同时也是一个回文数,754也 是回文素数。编程编写,显示20个回文素数。每行显示10个数,数字之间用空格隔开。显示如下。 2 3

package bookTest2;

public class primeNumber {
    public static void main(String[] args) {
        /*
        4.10,
回文素数是指一个数同时为素数和回文数 。例如,131是一个素数,同时也是一个回文数,754也
是回文素数。编程编写,显示20个回文素数。每行显示10个数,数字之间用空格隔开。显示如下。
2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929
     1.求出素数
     2.对于这个数 第一个 等于最后一个 然后  求回文
(就是求素数)
2 3 5 7 11
         */
        int[] arr = new int[1000];
        int number=0 ;
        int count = 0;
      outer:  for (int i = 2; i <1000 ; i++) {
             for (int j = 2; j <i ; j++) {
                 if (i %j == 0) {
                     continue outer;
                 }
          }
              arr[number]= i;
             number++;
         // System.out.println(i);输出出 所有的质数
          // 放 数组里面 做回文  让它们每个数 第一位和最后一位 相等
        }
        int a =0,b=0,c=0;

        for (int i = 0; i <arr.length ; i++) {
            if (arr[i] == 0) {
                break;
            }
                   // System.out.println((arr[i]));
            //把素数存放在数组里面了
            if (arr[i] >0 && arr[i]<10) {
                  a = arr[i];
                  b = arr[i];
               // System.out.println();
            }
            if (arr[i] >9 && arr[i]<100) {
                 a = arr[i]/10;
                b = arr[i]-a*10;
            }
            if (arr[i] >99 && arr[i]<1000) {
                 a = arr[i]/100;
                 c = (arr[i]-a*100)/10;
                 b = arr[i]-a*100-c*10;
              //  System.out.println(c);

            }
            if (a == b) {
               // System.out.print(arr[i]+" ");可以输出出来了  然后分组 10个一组
                System.out.print(arr[i]+" ");
                count++;//在外边设置一个变量  计数
                if (count%10==0) {//是这个变量取余数10 分两部分
                    System.out.println();
                }
            }
        }
    }

}

第二种方法 推荐第二种 我也是在网上看到的

package trainTest;

public class test {
    
    public static boolean isPrime(int n){
        for(int i=2; i*i<=n;i++){
            if(n % i ==0)
                return false;
        }
        return true;
    }
    public static boolean isPalindrome(int n){
        String s = String.valueOf(n);
        int low = 0;
        int heigh =s.length() - 1;
        while(low < heigh){
            if(s.charAt(low)!=s.charAt(heigh)){
                return false;  // 不是回文
            }
            low ++;
            heigh --;
        }
        return true;
    }
    public static void main(String[] args) {
        int count = 0;
        int n = 2;
        do{
            if(isPrime(n)&&isPalindrome(n)) {
                count ++;
                if(count %10 ==0){
                    System.out.printf("%5s%n",n);
                }else{
                    System.out.printf("%5s",n);
                }
            }
            n ++;
        }while(count < 20);
    }
}

运行截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值