`
MouseLearnJava
  • 浏览: 466225 次
  • 性别: 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
分享到:
评论

相关推荐

    正则表达式(很有用的东西)

    提供了加法、减法、乘法、除法等运算,以及判断素数、取模幂、求最大公约数等方法。 - `BigDecimal`类:用于进行高精度的浮点数运算,避免了浮点数运算的精度问题。`stripTrailingZeros()`和`toPlainString()`方法...

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

    然而,使用正则表达式来判断素数却是一个非传统的应用,通常正则表达式并不适用于此类数学逻辑问题的解决。但是,通过巧妙的设计,我们可以构造出能够匹配合数(非素数)模式的正则表达式,从而间接判断素数。 首先...

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

    文档中介绍了一种使用正则表达式来检查一个数字是否为素数(质数)的创新性方法。首先,需要将待检测的自然数转换成由多个“1”组成的字符串。例如,数字2转换成“11”,3转换成“111”,17转换成“***”。这一转换...

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

    而正则表达式能够帮助我们通过字符串的匹配规则来判断一个数是否为素数。 正则表达式的构成元素包括:字符(如数字、字母等)、元字符(如点号"."、脱字符"^"等)、量词(如"+"、"*"、"?"等)、选择结构(如"|")、...

    素数判定与线性方程求解

    )\1+$` 是一个非常有趣的例子,它可以用来判断一个由连续的字符 `'1'` 组成的字符串的长度是否为素数。 - **`^1?$`**:这部分用于处理字符串长度为 0 或 1 的情况。当字符串长度为 1 或为空时,该正则表达式不匹配...

    VBS 正则判别素数(质数)

    在VBS(Visual Basic Script)脚本语言中,利用正则表达式判断一个数是否为素数(质数)是一种非常巧妙且不常见的方法。素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。例如,2、3、5、7等都是...

    求文本中指定数字之后指定个数的所有素数

    判断一个数是否为素数是算法设计的关键。常见方法有质数筛法(如埃拉托斯特尼筛法)或通过连续除法尝试所有小于它的平方根的数。 4. **循环与计数**:为了找到指定个数的素数,我们需要设计一个循环结构(如for或...

    JavaScrpt判断一个数是否是质数的实例代码

    在JavaScript编程中,判断一个数是否为质数是一项常见的任务,尤其在算法和数学问题的解决中。质数是大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。本篇文章将通过两种不同的实例代码来讲解如何在...

    python.docx

    在Python中,可以通过循环和模运算来检查一个数是否为素数。对于201到300之间的所有整数,我们可以遍历这个范围,用sqrt函数找出可能的最大因数,如果能被整除,则不是素数,否则就是素数。最后统计并输出素数的数量...

    杭电计算机院 复试笔试题包括2016年

    解题时,需要编写程序来判断一个数是否为素数,然后再判断这个数的逆序数是否也是素数。常见的素数判断算法是试除法,从2到该数的平方根进行判断。 2. 文本中数字提取与处理问题 题目给出了一个文本文件,要求编写...

    5.25-5.28周作业(文件)1

    例如,要寻找反序数是素数的数,我们需要遍历`m`到`n`的每个数,然后反转它的数字并检查是否为素数。 4. **字符串操作**:题目涉及到字符串的反转、行程长度编码(RLC)压缩和解压。在Python中,可以用切片操作`[::...

    java小练习,Java练习小程序,Java必用

    - 判断一个给定的数是否为素数。 - 可以使用循环结构进行判断,并返回判断结果。 46. **字符串操作**: - 实现字符串的翻转操作。 - 可以使用StringBuilder类的reverse()方法实现字符串的翻转。 47. **数字...

    python组合数据类型

    2. **正则表达式**:Python中的`re`模块提供了正则表达式的操作,可以用于字符串的匹配、替换和分割等。基本语法包括字符集`[]`、量词`*`、`+`、`?`、`{m,n}`等。 3. **列表操作**: - **切片**:通过索引和步长...

    历年机试题目汇总1

    实现此功能需要编写一个素数判断函数,对于每个符合条件的数,检查其是否为素数,如果是素数并且个位为1,则输出。 2. **旋转矩阵**: 旋转矩阵是指一个矩阵经过一定角度旋转后得到的新矩阵。在2008年的题目中,...

Global site tag (gtag.js) - Google Analytics