关闭

金蝉素数

标签: Java素数金蝉素数
181人阅读 评论(0) 收藏 举报
分类:
题目:

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

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

思路:设置5位数k循环,对每一个k。

(1)除商法检查k是否为素数。

(2)对素数k的中间三位数检查是否为素数。

(3)检查k的每一位是否存在相同的数字。

(4)检查k的五位数字是否存在偶数,其最中间百位数是否为1或9

设置标志量t,赋初值为0,若有一部检查未通过,则t=1.若t=0,则k为金蝉素数。

源代码:

public class Jinchan {
	public static void main(String args[]){
		int[] array = new int[6];
		int t;
		int a=0;
		int j,i;
		System.out.println("金蝉素数如下:");
		for(int k=10001;k<99999;k+=2){
			t=0;
			for(j=3;j<Math.sqrt(k);j+=2){
				if(k%j==0){
					t=1;
					break;
				}
			}
			if(t==0){
				a=(k/10)%1000;              //取出中间三位数
				for(j=2;j<Math.sqrt(a);j+=2){
					if(a%j==0){
						t=1;
						break;
					}
				}
			}
			if(t==0){
				array[1]=k%10;
				array[2]=a%10;
				array[3]=a/100;
				array[4]=(a/10)%10;
				array[5]=k/10000;
				for(i=1;i<=4;i++)
					for(j=i+1;j<=5;j++)
						if(array[i]==array[j]){
							t=1;
							break;
						}
			}
			if(t==0){
				for(j=1;j<=5;j++)
					if(array[j]%2==0||array[3]==1||array[3]==9){
						t=1;
						break;
					}
			}
			if(t==0)
				System.out.print(k+"   ");
		}
	}
}
运行图:

金蝉素数如下:
13597   53791   79531   91573   95713 


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14211次
    • 积分:712
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条