求4位的可逆素数

public class Mao {

public static void main(String[] args) {
	int total=0;
	for(int i=1001;i<9999;i++){
		boolean ok=f(i);
		if(ok){
			boolean confirm=g(i);
			if(confirm){
				total++;
				System.out.println("符合条件:"+i);
			}
		}
		
	}
	
	System.out.println("总计:"+total/2+"对");
	
}
// 试商判别法

public static boolean f(int l) {

	if (l <= 1) {
		return false;
	}

	int max = (int) Math.sqrt(l);
	for (int i = 2; i < max + 1; i++) {
		if (l % i == 0) {
			return false;
		}
	}

	return true;
}

//判断逆序列是否满足条件
public static boolean g(int n){
	
	int m=n;
	int sum=0;
	int temp;
	temp=m%10;
	int flag;
	
	if(temp%2==0||temp==5){
		return false;
	}
	else{	
		flag=3;
		sum=(int) (sum+Math.pow(10, flag)*temp);
		m=m/10;       
		
		while(m>=10){
			
			flag--;
			
			temp=m%10;
			
			if(temp%2==0||temp==5){
				return false;
			}
			
			sum=(int) (sum+Math.pow(10, flag)*temp);
			m=m/10;
		}
		
		if(m%2==0||m==5){
			return false;
		}
		flag--;
		
		sum=(int) (sum+Math.pow(10,flag)*m);
		
	}
   
    boolean ok=f(sum);
    if(ok){
    	        	return true;
    }		
	return false;
}

}

//答案给的11个,个人认为有11对,每一个肯定成对出现,不可能是单数,欢迎相互讨论

转载于:https://my.oschina.net/u/2511906/blog/846908

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值