利用正则表达式能够来进行某些须要整除操做的判断,例如:奇偶性,质数合数等。javascript
PS:本文建议有必定正则基础的看,须要了解基本的正则,回溯,贪心等。java
判断偶数:首先把数字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的缘由仅限于非负整数的判断。code
判断奇数:奇数和偶数互逆,加一个非就好了。ip
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特殊处理便可。io
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