JAVA输出素数与反素数

反素数即逆向拼写的素数,是指一个将其逆向之后也是一个素数的非回文素数。例如13是一个素数,而31也是一个素数,所以13和31是反素数。编写程序,显示前n个反素数(n由用户输入)。每行显示10个。

img

img

参考如下:

import java.util.Scanner;

/**
 * @author huazie
 * @version 2.0.0
 * @since 2.0.0
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int i = 12;
        int count = 0;
        while (n > 0) {
            int reserveInt = reserve(i);
            if (isPrime(i) && isPrime(reserveInt) && i != reserveInt) {
                n--;
                count++;
                System.out.print(i + " ");
                if (count % 10 == 0) {
                    System.out.println();
                }
            }
            i++;
        }

    }

    private static boolean isPrime(int n) {
        boolean isPrime = true;
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                isPrime = false;
                break;
            }
        }
        return isPrime;
    }

    private static int reserve(int n) {
        int sum = 0;
        while (n > 0) {
            sum = 10 * sum + n % 10;
            n /= 10;
        }
        return sum;
    }
}

package itcast_01;
import java.util.Scanner;
public class test02 {
    public static void main(String[] args) {
         Scanner input=new Scanner(System.in);
         System.out.print("Please enter a number for counts: ");
         int counts=input.nextInt();
         isPrimeCount(counts);
    }
    public static void isPrimeCount(int num) {
        int count=0;
        int number=13;
        while (count<num) {
            String number1=String.valueOf(number);
            int len=number1.length();
            int number2=0;
            for (int j=0;j<len;j++) {
                int m=number1.charAt(len-j-1)-'0';// 将字符型数字转化为十进制数字
                number2+=m*Math.pow(10, len-j-1);//将m乘以所在位的次方,累加得到number的反数
            }
            if (isPrime(number)&&isPrime(number2)&&number!=number2) {
                count++;
                if (count%10==0) {
                    System.out.printf("%5d\n",number);
                }
                else 
                    System.out.printf("%5d",number);
            }
            number++;
        }
    }
    public static boolean isPrime(int n) {
        for (int i=2;i<=n/2;i++) {
            if (n%i==0) 
                return false;
        }
        return true;
    }//此方法用来判定素数
}