外星人源码论坛 首页 编程经验 【奇技淫巧】利用正则进行需要整除操作的判断,如:奇偶性,质数合数 ...

【奇技淫巧】利用正则进行需要整除操作的判断,如:奇偶性,质数合数 ...

2018-3-6 11:21
原作者: 外星人源码网 来自: 外星人源码网 收藏 分享 邀请

利用正则表达式可以来进行某些需要整除操作的判断,例如:奇偶性,质数合数等。 PS:本文建议有一定正则基础的看,需要了解基本的正则,回溯,贪心等。 奇偶性 判断偶数:首先把数字n转化为重复n次1的字符串,然后通 ...

利用正则表达式可以来进行某些需要整除操作的判断,例如:奇偶性,质数合数等。

PS:本文建议有一定正则基础的看,需要了解基本的正则,回溯,贪心等。

奇偶性

判断偶数:首先把数字n转化为重复n次1的字符串,然后通过正则的匹配判断该字符串是否是多个或则0个(0也是偶数)重复的11字符串。

function isEven(n) {
  return /^(11)*$/.test('1'.repeat(n));
}

isEven(0); // true
isEven(1); // false
isEven(2); // true

PS:当然,由于repeat的原因仅限于非负整数的判断。

判断奇数:奇数和偶数互逆,加一个非就行了。

function isOdd(n) {
  return !/^(11)*$/.test('1'.repeat(n));
}

isEven(0); // false
isEven(1); // true
isEven(2); // false

质数合数

判断合数:同上转换为字符串。然后通过正则匹配是否由2个及以上重复的字符串'11...'(1的个数也必须是2个及以上,能被1整除的不一定是合数)。

function isNotPrime(n) {
  return /^(11+?)\1+$/.test('1'.repeat(n))
}
isNotPrime(0); isNotPrime(1); isNotPrime(2); isNotPrime(3); isNotPrime(5); // false  
isNotPrime(4); isNotPrime(6); isNotPrime(8); isNotPrime(9); isNotPrime(10); // true

判断质数:质数和合数在除开0,1的情况下的自然数来看是互逆的,那么只需要给0,1特殊处理即可。

function isPrime(n) {
  return !/^1?$|^(11+?)\1+$/.test('1'.repeat(n))
}

isPrime(2); isPrime(3); isPrime(5); isPrime(7); isPrime(11); isPrime(13);// true  
isPrime(0); isPrime(1);isPrime(4); isPrime(6); isPrime(8); isPrime(9); isPrime(10); // false

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

粉丝 阅读53 回复0
上一篇:
Hive分析窗口函数(四) LAG,LEAD,FIRST_VALUE,LAST_VALUE发布时间:2018-03-06
下一篇:
Hive分析窗口函数(三) CUME_DIST,PERCENT_RANK发布时间:2018-03-06
推荐资讯
阅读排行
国内最专业的源码技术交流社区
全国免费热线电话

0373-5171417

周一至周日9:00-23:00

反馈建议

admin@eenot.com 在线QQ咨询

扫描二维码关注我们