什么是回文素数?
回文素数即从左向右读与从右向左读是完全一样的素数,典型的回文素数如下:
11,101,131,151,181,……。
回文素数往往与记数系统的进位值有关。目前,数学家仍无法证明在十进制中是否包含无限多个回文素数。
在其他进制中也有回文素数的概念,例如,在二进制中,回文素数包括梅森素数和费马素数。
计算回文素数算法
package 回文素数;
import java.util.Scanner;
public class Example {
//判断是否是素数
static int isSushu(int n){
for(int i=2;i<n;i++){
if(n%i==0)return 0;
}
return 1;
}
static int huiwen(int n){
int k=1;
int count=0;
int m,t;
int sum=0,num;
//判断整数n的位数
while(k>0){
k=(int) (n-Math.pow(10, count));
count++;
}
//m为整数n实际的位数
m=count-1;
t=n;
//判断是否是回文数,可以通过将数字的首尾颠倒,判断颠倒后的两个数是否相等来实现回文数的判定
for(int i=0;i<m;i++){
num=t%10;
sum=(int) (sum+num*Math.pow(10, m-i-1));
t=(t-num)/10;
}
//如果要判断的数是素数,并且首尾颠倒后仍然与本身相等,则返回1
if(isSushu(n)==1&&sum==n)return 1;
return 0;
}
public static void main(String[] args) {
System.out.println("请输入整数上限:");
Scanner scan=new Scanner(System.in);
int t=scan.nextInt();
int x=0;
System.out.println("从10到上限"+t+"之间的回文素数有:");
for(int i=10;i<=t;i++){
if(huiwen(i)==1){
System.out.print(i+" ");
x++;
if(x%10==0)System.out.println();
}
}
}
}