关闭

可逆素数

标签: Java素数可逆素数boolean
212人阅读 评论(0) 收藏 举报
分类:

题目:编写程序找出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  





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14294次
    • 积分:712
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条