反素数即逆向拼写的素数,是指一个将其逆向之后也是一个素数的非回文素数。例如13是一个素数,而31也是一个素数,所以13和31是反素数。编写程序,显示前n个反素数(n由用户输入)。每行显示10个。
参考如下:
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;
}//此方法用来判定素数
}