金蝉素数

public class Mao {

public static void main(String[] args) {
	for (int i = 100; i <= 9999; i++) {
		boolean ok = f(i);
		if (ok) {
			boolean confirm=g(i);
			if(confirm){
				System.out.println("符合条件:"+i);
			}

		}
	}

}
// 试商判别法

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;
	String result = String.valueOf(m);
	int length = result.length();
	int a1,a2,a3,a4,a5;
	boolean s1,s2,s3,s4,s5,temp=false,temp1=false,temp2=false,temp3=false;
	  
	if (length == 3) {
		//同时去掉最高位和最低位
		a1=m/10;
		a1=a1%10;
		
		//去掉最低位
		a2=m/10;
		
		//去掉最低位两位
	    a3=m/100;
	    
	    //去掉最高位
	    a4=m%100;
	    
	    //去掉最高位两位
	    a5=m%10;
	    
	    s1=f(a1);
	    s2=f(a2);
	    s3=f(a3);
	    s4=f(a4);
	    s5=f(a5);
	    
	    if(s2&&s3){
	    	temp=true;
	    }
	    
	    if(s4&&s5){
	    	temp1=true;
	    }
	
	    if(s1&&temp1&&temp){
	    	return true;
	    }else{
	    	return false;
	    }
	    
	}
	//判断4位数
	if(length==4){
		//同时去掉最高位和最低位
		a1=m/10;
		a1=a1%100;
		
		//去掉最低位
		a2=m/10;
		
		//去掉最低位两位
	    a3=m/100;
	    
	    //去掉最高位
	    a4=m%1000;
	    
	    //去掉最高位两位
	    a5=m%100;
	    
	    s1=f(a1);
	    s2=f(a2);
	    s3=f(a3);
	    s4=f(a4);
	    s5=f(a5);
		
		
	    if(s2&&s3){
	    	temp2=true;
	    }
	    
	    if(s4&&s5){
	    	temp3=true;
	    }
	
	    if(s1&&temp2&&temp3){
	    	return true;
	    }else{
	    	return false;
	    }
		
	}
	
	return false;
	
}

} //注释:本人觉得计算机程序设计经典题解的答案有掉解,欢迎各位提出不同的答案

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值