今天在【科技爱好者周刊(第 206 期):如何走出失望和怀疑】里看到一个文章介绍一个正则表达式,可以检查是不是一个质数,很有意思。
原文: A regular expression to check for prime numbers
正则表达式为:
/^1?$|^(11+?)\1+$/;
先把要检查的数字转成对应个数个 1,比如 3 转成 111,然后用这个正则表达式匹配,如果匹配成功,则不是质数。
1
3
111
⚠️ 注意:只研究正则表达式,请不要用在实际项目中,因为性能很差。
质数是指有且只有 1 和本身这两个正整数约数的数。
#regex #regular-expression #质数
def is_prime(n) ("1" * n) !~ /^1?$|^(11+?)\1+$/ end print is_prime(9) print is_prime(11)
function isPrime(n) { return !/^1?$|^(11+?)\1+$/.test("1". repeat(n)); } // Or const isPrime = (n) => !/^1?$|^(11+?)\1+$/.test("1". repeat(n)); console.log(isPrime(8)); console.log(isPrime(13));