本文主要是介绍Java趣味编程案例13----金蝉素数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
金蝉素数:这些数是由1,3,5,7,9 这5 个奇数字排列组成的5 位素数,且同时去掉它的最高位与最低位数字后的三位数还是素数,同时去掉它的高二位与低二位数字后的一位数还是素数。因此,人们把这些神秘的素数称为金蝉素数。
分析:假设有一个5位数k,首先k是素数,其次,k去掉首尾后的三位数d也是素数,且d的中间位的数是素数,说明中间的那个数不是1或9.同样,k的每一位的值都不相同,且都不是偶数。
所以,判断步骤如下:
1、判断k是不是素数
2、判断d是不是素数
3、判断d的中间一位数是不是1或9
4、判断k的每一位都不是偶数
只要任意一个条件不满足金蝉素数的条件,都不是金蝉素数。
代码如下:
package _4InterestingPrime;
/*
金蝉素数*/public class _4_3 {public static void main(String[] args) {int k;int i,j;int t;//标志位,1表示不是素数int[] a=new int[6];int d=0;for(k=10001;k<=99999;k+=2){t=0;//判断k是不是素数for(j=3;j<=Math.sqrt(k);j+=2){//从3开始缩小范围if(k%j==0){t=1;break;}}//判断去掉首尾后的d是不是素数if(t==0){d=(k/10)%1000;for(j=2;j<d/2;j++){if(d%j==0){t=1;break;}}}//判断每一位的数是否相等if(t==0){//获取个位--万位的值a[1]=k%10;a[2]=d%10;a[3]=(d/10)%10;a[4]=d/100;a[5]=k/10000;for(i=1;i<=4;i++){for(j=i+1;j<=5;j++){if(a[i]==a[j]){t=1;break;}}}}//d的中间数即k的百位数是素数,不能是1或9,且每一个位数不能是偶数if(t==0){for(j=1;j<=5;j++){if(a[j]%2==0||a[3]==1||a[3]==9){t=1;break;}}}if(t==0){System.out.println("k="+k);}}}
}
结果:
这篇关于Java趣味编程案例13----金蝉素数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!