金蟾素数问题

来源:互联网 发布:usb数据采集卡驱动 编辑:程序博客网 时间:2024/06/08 12:42

【题目描述】
某古寺的一块石碑上依稀刻着一些神秘的自然数。这些数是由1,3,5,7,9这五个奇数排列组成的5位素数,且同时去掉它的最高位和最低位数字后剩下的3位数还是素数,同时去掉它的高二位与低二位数字后剩下的一位数还是素数,人们把这些神秘的素数称为金蝉素数,寓意金蝉脱壳之后仍为美丽的金蝉。编程找出石碑上的金蝉素数。
【输入描述】
无输入。
【输出描述】
每行输出一个金蝉素数。
【输入样例】

【输出样例】
13597
53791
package self;

public class Galdsushu {

/** *金蝉素数 * * *1.试商检查k是否为素数 *2.应用求余运算对脱壳之后的三位数d应用试商发判定d是否为素数 *3.对于k与d同时为素数是,分离出其中五个数字赋值给数组a,设置二重循环比较 *  k是否存在相同数字 *4.检查五个数字中是否有偶数,其中间数字a【3】是否为1-9 */public static void main(String[] args) {    // TODO Auto-generated method stub    int k,d=0,t,i,j,a[]=new int[6];    System.out.println("金蝉素数为:");    for(k=10001;k<99999;k+=2)    {        t=0;//素数标准,0代表是素数,1代表不是素数        for(j=3;j<=Math.sqrt(k);j+=2)            if(k%j==0) /* 试商求素数 */            {                t=1;                break;            }        if(t==0) /* k 为 5 位素数 */        {

// a[1]=k%10; //存放k的个位数
// a[5]=k/10000;//存放k的万位数
d=(k/10)%1000;//取出k的中间3位数
for(j=2;j<=Math.sqrt(d);j++)
if(d%j==0) /* 试商求素数 */
{
t=1;
break;
}
}
if(t==0) /* d 为 3 位素数 */
{
a[1]=k%10; //存放k的个位数
a[2]=d%10;//存放d的个位数,也是k的十位数
a[4]=d/100;//存放d的百位数,也是k的千位数
a[3]=(d/10)%10;//存放d的十位数,也是k的百位数
a[5]=k/10000;//存放k的万位数

            for(i=1;i<=4;i++) /* 比较确保没有相同数字 */                for(j=i+1;j<=5;j++)                    if(a[i]==a[j])                    {                        t=1;                        break;                    }        }        if(t==0)        {            for(j=1;j<=5;j++) /* 排除偶数字与中间数字为 1,9 */                if(a[j]%2==0 || a[3]==1 || a[3]==9)                {                    t=1;                    break;                }        }        if(t==0)            System.out.println(k); /* 输出金蝉素数 */        }}

}

0 0
原创粉丝点击