可逆素数

题目:编写程序找出1-999之内的可逆素数(可逆素数是指一个素数的各位数值顺序颠倒后得到的素仍为素数,如113,311)。

思路:

可分为两步,第一步判断是否为素数,第二部判断它的反序数是否为素数。

判断素数:

private static boolean Sushu(int i) {
		boolean Sushu=true;
		if(i==1||i==2){
			return true;
		}
		for(int j=2;j<Math.sqrt(i);j++){
			if(i%j==0){
				return false;
			}
		}
		if(Sushu==true){
			return true;
		}else
		    return false;
	}
反序数:

private static int Fan(int i) {
		int len = getBitCount(i);         //getBitCount(i)求i的长度
		int s=0;
		for(int j=1;j<len+1;j++){
			//getBit(i,j)求数i的第j位上的数字
			s+=Math.pow(10, len-j)*getBit(i,j);    //每一位乘以权值相加
		}
		return s;
	}
主方法:

public static void main(String args[]){
	  int count =1;
	    System.out.println("1000以内可逆素数如下:");
	  for(int i=1;i<1000;i+=2){
		  /*i是素数,i的反序数也是素数,则i是可逆素数
		   * Sushu判断是否是素数
		   * Fan求i的反序数
		   */
		  if(Sushu(i)&&Sushu(Fan(i))){
			  System.out.printf(count++%7!=0?"%3d  ":"%3d \n",i);
		  }
	  }
	}
源代码:

public class Keni {
	public static void main(String args[]){
	  int count =1;
	    System.out.println("1000以内可逆素数如下:");
	  for(int i=1;i<1000;i+=2){
		  /*i是素数,i的反序数也是素数,则i是可逆素数
		   * Sushu判断是否是素数
		   * Fan求i的反序数
		   */
		  if(Sushu(i)&&Sushu(Fan(i))){
			  System.out.printf(count++%7!=0?"%3d  ":"%3d \n",i);
		  }
	  }
	}
   //求反序数
	private static int Fan(int i) {
		int len = getBitCount(i);         //getBitCount(i)求i的长度
		int s=0;
		for(int j=1;j<len+1;j++){
			//getBit(i,j)求数i的第j位上的数字
			s+=Math.pow(10, len-j)*getBit(i,j);    //每一位乘以权值相加
		}
		return s;
	}
    private static int getBit(int i, int j) {
		if(j>getBitCount(i)||j<1)
			return -1;
		return (i%((int)Math.pow(10, j)))/(int)Math.pow(10, j-1);
	}
    //求i的位数
	private static int getBitCount(int i) {
		int k=1;
		while(i/10>0){
			k++;
			i/=10;
		}
		return k;
	}
	//判断素数
	private static boolean Sushu(int i) {
		boolean Sushu=true;
		if(i==1||i==2){
			return true;
		}
		for(int j=2;j<Math.sqrt(i);j++){
			if(i%j==0){
				return false;
			}
		}
		if(Sushu==true){
			return true;
		}else
		    return false;
	}
}
运行图:

1000以内可逆素数如下:
  1    3    5    7    9   11   13 
 17   31   37   71   73   79   97 
101  107  113  121  131  149  151 
157  163  167  169  179  181  191 
199  311  313  337  347  353  359 
361  373  383  389  701  709  727 
733  739  743  751  757  761  769 
787  797  907  919  929  937  941 
953  961  967  971  983  991  





阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpuxiaofang/article/details/51550174
个人分类: java基础题100道
上一篇金蝉素数
下一篇回文素数
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭