A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋明文 中级黑马   /  2015-7-30 10:04  /  764 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋明文 于 2015-8-6 08:34 编辑

      质数只能被1和它自己整除。质数和其他数字一样,排在无穷无尽的自然数里,几乎被相邻的两个数字挤扁,虽然被挤压着,却又藏着一种格格不入的孤独。质数永远是可疑的、不合群的孤独者,所以马蒂亚喜欢质数。有时候,马蒂亚觉得质数一定是误入了某种陷阱,才会被囚禁在自然数的序列里,就像珍珠被囚禁在项链里,永远无法逃离。有时候,马蒂亚又觉得也许质数最大的愿望就是变成一个普通的自然数,和别的数字一样正常,不再那么格格不入,但是,这个愿望永远不可能实现……

        大学一年级的时候,马蒂亚学到这样一个知识点:质数中还有一些更为特殊的数字,数学家们称之为“孪生质数”。每一对孪生质数的位置相差不远,几乎可以说是邻居,但它们之间却总会插进一个偶数,硬生生把它们隔开。比如11和13、17和19、41和43都是孪生质数。如果你继续观察下去,就会发现孪生质数变得越来越少。越来越多孤立的质数,存在于这个寂静的谜一样的空间里。越观察,你越会产生一个绝望的预感:之前发现的那些孪生质数也许只是偶然的巧合,而孤独、彻底的孤独,才是一个质数真正的宿命。但是,就在你准备放弃,觉得再也没有必要继续观察下去的时候,你又会碰到一对孪生质数,它们紧紧地依偎在一起,对抗着周围的冰冷和绝望。数学家们相信,不管你观察到哪里,前方一定还有更多的孪生质数,虽然没有人知道,下一对孪生质数会出现在哪里,但我们总会找到它们。 马蒂亚觉得,他和爱丽丝就是一对孪生质数。他们都很孤独,他们同样迷失在这个冰冷的世界里,他们是彼此唯一的安慰,但他们之间仍隔着不可逾越的障碍,他们永远无法真正地紧挨着彼此。
                     ——《质数的孤独》
下面我给大家带来我自己编写的打印孪生质数的方法:
import java.util.Scanner;//导包
class SearchTime
{
        public static void main(String[] args)
        {        System.out.println("***************输入任意大于 5 的整数***************");
                Scanner sc=new Scanner(System.in);
                int num=sc.nextInt();//接收键盘录入数据
                long start=System.currentTimeMillis();//本程序可以用来简单检测设备性能,所以定义了获取运行时间的代码。
                search(num);
                long end=System.currentTimeMillis();
                System.out.println("运行时间:"+(end-start)+"毫秒");
        }
        public static void search(int num)
        {        
                int[] arr = new int [num];//建立一维数组储存质数
                int count = 0;
               

                q:for (int x=3;x<=num ;x++ )
                {
                        int a=2;
                        while (a<x)
                        {
                                if (x%a==0)//循环遍历所有的可能约数,有大于2的约数跳出while循环。
                                        break;
                                else
                                {
                                        a++;
                                        if(a>(int)(Math.sqrt(x)))
                                        {        
                                                arr[count++]=x;//找出质数后存进数组。
                                                continue q;
                                        }
                                }
                        }        
                }
                //打印孪生质数
                for (int x=0;x<arr.length-1 ;x++ )
                {
                        if ( (arr[x+1]-arr[x]) == 2 )
                        {
                                System.out.print("("+arr[x]+","+arr[x+1]+")"+"\t");
                        }
                }
        
        }
}

刚学习不久,若有漏洞,请见谅;若大神有更好算法,还请赐教。


14 个回复

倒序浏览
         会玩
回复 使用道具 举报
谁是孤独 阿
回复 使用道具 举报 1 0
我来顶一个
回复 使用道具 举报
经常练练,有益于身心健康
回复 使用道具 举报
宛康0723 来自手机 中级黑马 2015-8-1 21:49:30
地板
打酱油打酱油打酱油的
回复 使用道具 举报
够文艺。。。
回复 使用道具 举报

谢谢啊!!!!!!!!!!!!!
回复 使用道具 举报
娜妞子~ 来自手机 中级黑马 2015-8-2 07:02:00
9#
是挺文艺范
回复 使用道具 举报

把学到的,和之前看过的书结合到一起就成了这种效果{:2_32:}
回复 使用道具 举报
自顶一个。。。。。。。。。。。
回复 使用道具 举报
《质数的孤独》
回复 使用道具 举报
自顶一个。。。。。。。。。。。
回复 使用道具 举报
支持一下黑马,嘿嘿
回复 使用道具 举报

支持一下黑马,嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马