趣味素数-金蝉素数-java

问题描述:

某古寺的一块石碑上依稀刻有一些神秘的数字。

专家研究发现:这些数字是由1,3,5,7,9这5个奇数排列组成的5为素数,且同时去掉它的最高位与最低位数字后的3位数还是素数,同时去掉它的高二位与低二位数字后的一位数还是素数。因此,人们把这些神秘的素数成为金蝉素数,喻意金蝉脱壳之后仍然为美丽的金蝉。试求出石碑上的金蝉素数。


public class Main {
	
public static void main(String[]Args){  
	
	int[] a = new int[6];
	for(int i=13579 ; i<=97531 ; i+=2){   //设置范围
		int t=0;		//标志,0代表素数,1代表不是素数
		for(int j=3 ; j<=Math.sqrt(i) ; j+=2){	//判断是不是素数
			if(i%j==0){
				t=1;	//修改标志	
				break;
			}
		}
		
		
		
		a[1] = i/10000;		//万分位
		a[2] = (i/1000)%10;	//千分位
		a[3] = (i/100)%10;	//百分位
		a[4] = (i/10)%10;	//十分位
		a[5] = i%10;		//个位
		
		if(t==0){
			for(int x=1 ; x<=5 ; x++){		//筛选调是偶数的数字
				if(a[x]%2==0){
					t=1;
					break;
				}
			}
		}
		
			if(t==0){						
			for(int x=1 ; x<=4 ; x++){		//比较 ,确保没有相同的数字
				for(int y=x+1 ; y<=5 ; y++){
					if(a[x]==a[y]){
						t=1;
						break;
					}
				}
			}
		}
		
		
		if(t==0){		//确保中间的数字不是1或9  因为不是素数
			if(a[3]==1||a[3]==9){
				t=1;
			}
		}
		if(t==0){
			int num = a[2]*100 +a[3]*10 + a[4];
			for(int j=3 ; j<=Math.sqrt(num) ; j++){		//确保去掉最高位和最低位还是素数
				if(num%j==0){
					t=1;
					break;
				}
			}
		}
		
		if(t==0){		
			System.out.println(i);		//如果是素数  输出该数字
		}
	}
	 	
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值