(回文素数)编写程序,显示前100个回文素数。每行显示10个数,数字中间用一个空格隔开
前期题要
回文素数是指一个数同时为素数和回文数。
例如:131是一个素数,同时也是一个回文素数。
数字313和757也是如此。
代码实现
import java.util.ArrayList;
public class java6_26 {
public static void main(String[] args){
int MAX=100;//回文素数数量
System.out.println("回文素数(指一个数同时为素数和回文数)");
System.out.println("以下输出数量为"+MAX+"的回文素数");
reversesu(MAX);
}
public static void reversesu(int MAX){
int j,k,sum=1,n=1;//2是素数
ArrayList<Integer> list=new ArrayList<>();
k=3;
list.add(2);
do{
j=3;//重置j,从头来过
while(j<=Math.sqrt(k)&&(k%j!=0))
j++;
if(j>Math.sqrt(k)&&isPalindrome(k)) {
//3~根号k中的任何值都不除尽k,满足条件;且判断是否是回文
list.add(k);//将素数存入list动态数组当中
sum++;
}
k+=2;//计算下个奇数
}while(sum<MAX);
for(Integer temp:list)
{
System.out.print(temp+" \t");
if(n%10==0) System.out.println();
n++;
}
}
public static int reverse(int number)//进行逆反数输出
{
int result=0;
while(number!=0) {
result = result * 10 + number % 10;//取最后一位,然后最后一位*10
number = number / 10;//去除最后一位
}
return result;
}
public static boolean isPalindrome(int number)//进行判断是否回文
{
return number==reverse(number);
}
}
输出