金蟾素数问题

【题目描述】
某古寺的一块石碑上依稀刻着一些神秘的自然数。这些数是由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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值