有趣的回文素数

什么是回文素数?

回文素数即从左向右读与从右向左读是完全一样的素数,典型的回文素数如下:

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();
	             }
	        
	        }
			
		}
        
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值