`
MouseLearnJava
  • 浏览: 459582 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用正则表达式判断一个数是否为素数

阅读更多

正则表达式能够用于判断一个数是否为素数,这个以前完全没有想过。

本文将给出一个使用正则判断素数的方法,该正则表达式来源于网页http://stackoverflow.com/questions/2795065/how-to-determine-if-a-number-is-a-prime-with-regex
正则表达式为.{0,1}|(.{2,})\\1+

正则含义

.{0,1}                        ### The first part of the alternation matches String of length 0 or 1 (NOT prime by definition)
|                             ### Or 
(.{2,})\\1+                   ### The second part of the alternation, a variation of the regex explained above, matches String of length n that is "a multiple" of a 
                                  String of length k >= 2 (i.e. n is a composite, NOT a prime). 

代码如下:

public class CheckPrimeUsingRegex {

	public static boolean isPrime(int n) {
		return !new String(new char[n]).matches(".{0,1}|(.{2,})\\1+");
	}
}

 
测试输出100以内的所有素数

public class CheckPrimeUsingRegexTest {
	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {
			if (CheckPrimeUsingRegex.isPrime(i)) {
				System.out.println(i);
			}
		}
	}
}

 

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

这种判断素数的方法适合小一点的数,并不适合判断比较大的数值,数字很大时容易产生OutOfMemoryError。

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Unknown Source)
	at java.lang.String.<init>(Unknown Source)
	at CheckPrimeUsingRegex.isPrime(CheckPrimeUsingRegex.java:13)
	at CheckPrimeUsingRegexTest.main(CheckPrimeUsingRegexTest.java:4)

 

原文地址 http://thecodesample.com/?p=1006

更多的例子请访问 http://thecodesample.com/

0
0
分享到:
评论

相关推荐

    用正则表达式来判断素数的代码

    下面这段Python代码演示了一个用正则表达式来判断素数的方法

    正则表达式与数学(方程式、线性方程)

    )\1+$ 可以判断素数(换成n个1的形式,n为数字的大小。比如5转换为11111;3转换为111;2转换为11。) 什么是素数? 初中学的吧。我们老师当初教我们的是“质数”。看下概念: 质数又称素数。指在一个大于1的自然数中...

    检查素数的正则表达式分享

    检查素数与否的正则表达式 要使用这个正规则表达式,你需要把自然数转成多个1的字符串,如:2 要写成 “11”, 3 要写成 “111”, 17 要写成“11111111111111111”,这种工作使用一些脚本语言可以轻松的完成。 一...

    素数判定与线性方程求解

    今天又学到一个牛B东西。你相信吗?正则表达式竟然可以用来判定素数,甚至可以用来解方程!下面这段正则表达式可以用来判断,一个字符串的长度是否为合数(假设这个字符串里全是字符'1'):

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例077 使用正则表达式验证一个月的31天 93 实例078 使用正则表达式验证数字输入 94 实例079 使用正则表达式验证密码长度 95 实例080 使用正则表达式验证非零的正整数 96 实例081 使用正则表达式验证非零的负整数 ...

    python.docx

    (1)设计正则表达式,生成长度为500的字符串,其中包括AB组合、大写字母、小写字母、数字及标点符号;(10分) (2)将其按照标点符号进行分隔,并以空格进行连接; (3)将字符串中的‘AB'替换为“**”,返回替换后的结果...

    C#编程经验技巧宝典

    的值 52 &lt;br&gt;0069 求最大公约数 52 &lt;br&gt;0070 求最小公倍数 53 &lt;br&gt;0071 判断素数的算法 53 &lt;br&gt;0072 如何判断一个数是否是完数 54 &lt;br&gt;0073 歌德巴赫猜想的算法 54 &lt;br&gt;0074 八皇后...

    leetcode数组下标大于间距-problems:问题

    likeword:正则表达式匹配,单词不包含:连续相等的字母、形如“xyxy”的子序列、全部为大写 luckybag:dfs,满足所有数字之和大于数字之积的子数组个数 mixcolor:数学问题+动态规划+贪心,颜色混合(A OR B),...

    Java开发技术大全(500个源代码).

    leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...

    Java JDK实例宝典

    14 使用正则表达式验证电话号码的格式 第6章 Java异常处理 6. 1 throw. throws. try和catch 6. 2 自定义异常类 6. 3 使用finally 6. 4 使用异常的技巧与原则 第7章 IO——输入输出流 7...

    Java范例开发大全 (源程序)

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的字符 146...

    java范例开发大全(pdf&源码)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    java范例开发大全源代码

     实例105 使用正则表达式验证电话号码的格式 141  6.2 字符串缓存类StringBuffer 143  实例106 创建字符串缓存类 143  实例107 提取单个字符 144  实例108 给指定字符赋值 145  实例109 插入新的...

    java范例开发大全

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 插入新的...

    Java范例开发大全(全书源程序)

    实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类StringBuffer 143 实例106 创建字符串缓存类 143 实例107 提取单个字符 144 实例108 给指定字符赋值 145 实例109 插入新的字符 146 实例110 ...

Global site tag (gtag.js) - Google Analytics