利用正则判断是否为素数

本文主要记录正则中\N的用法

 

var n = 7; //要判断的数字

// 转换成具有n长度的字符串
var s = [];
while (n--){
    s.push('i');
}
s = s.join(''); // s = 'iiiiiii'


var re = /^i?$|^(ii+?)\1+$/; // 关键的正则

!re.test(s); // true

 

为什么这个正则会起作用呢?

原因主要是在\1这个地方。

正则|前半部分主要是判断0或1的,很简单。

\N代表了第N组的内容,那么这个正则的|后面的部分的意思就是取前m(m>=2)个i,看看m个i后是不是正正好好有m * 自然数个i。等同于s的长度能不能被m整除,几乎就是最原始的遍历整除测试判断法。

posted @ 2012-04-18 15:51  谁抢了我的刺猬  阅读(197)  评论(0编辑  收藏  举报