|||
上午看到一篇新闻报道:华人科学家张益唐首次证明存在无穷多素数对,为解决孪生素数猜想迈出重要一步(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));
}
}
}
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 16:48
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社