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);
}
}
运行截图