myvolcano的个人博客分享 http://blog.sciencenet.cn/u/myvolcano 文献计量、知识产权情报、科学计量评价

博文

孪生素数猜想——利用 Java + 正则表达式 输出孪生素数对

已有 7812 次阅读 2013-5-19 16:17 |个人分类:交流分享|系统分类:科研笔记| java, 正则表达式, 孪生素数猜想

上午看到一篇新闻报道:华人科学家张益唐首次证明存在无穷多素数对,为解决孪生素数猜想迈出重要一步(http://www.cas.cn/xw/kjsm/gjdt/201305/t20130515_3840072.shtml)。

作为一个门外汉,以前只知“素数”,不知道还有“孪生素数猜想”这么一个世界难题(http://zh.wikipedia.org/wiki/%E5%AD%AA%E7%94%9F%E7%B4%A0%E6%95%B0%E7%8C%9C%E6%83%B3)。

查了一下资料,发现正则表达式竟然可以用来检查素数(http://coolshell.cn/articles/2704.html)!(由于工作需要,几年前开始接触、利用正则表达式,给工作带了很大方便,也曾多次向同事、朋友推荐学习。)

不禁感叹“高手在网络”!这位网友的功力深不可测啊!可谓“正则玩到了极致”!当然,也再次见识了正则表达式的神奇!在这里,也在此推荐有相关工作需要的各位网友学习一下“神奇的正则表达式”!

找到了网友共享的利用上述思路输出素数的Java程序(http://blog.csdn.net/54powerman/article/details/8894791),正好对Java略知一二,一时兴起,略加改进,实现了 利用 Java + 正则表达式 输出孪生素数对。现与各位网友分享:

 

/**
*
* Title: TwinPrimeNumbers
* Author: matc@mail.whlib.ac.cn
*
**/

public class TwinPrimeNumbers
{
public static void main(String[] args)
{
    //main_1();
    main_2();
}
 
//返回一定范围内的素数
public static void main_1()
{
 String regex="^1?$|^(11+?)\1+$";
 StringBuffer sb=new StringBuffer();
 
 for(int i=1;i<100;i++)
 {
  sb.append("1");
  if(!sb.toString().matches(regex))
  {
   System.out.println(i);
  }
 }
}
 
//返回一定范围内的孪生素数
public static void main_2()
{
 String regex="^1?$|^(11+?)\1+$";
 StringBuffer sb1=new StringBuffer();
 StringBuffer sb2=new StringBuffer();
 sb2.append("11");
 
 for(int i=1;i<100;i++)
 {
  sb1.append("1");
  sb2.append("1");
  if(!sb1.toString().matches(regex))
  {
   if(!sb2.toString().matches(regex))
   System.out.println(i+"_"+(i+2));
  }
 }
}
}

 

 

 

 

 

 

 

 

 

 

 

 

 



https://blog.sciencenet.cn/blog-5168-691465.html

上一篇:奇怪现象:“专利权全部无效”后“未缴年费专利权终止”?
下一篇:孪生素数猜想—— 一些有趣的现象
收藏 IP: 27.16.23.*| 热度|

2 杨华磊 卢宏超

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-23 16:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部