原文:
js 正則之檢測素數
原文《檢查素數的正規表示式》,在文章裡已經解釋了他是怎麼判斷的,我就不囉嗦了。
我們來說說 js 如何實現它吧。
在那篇文章裡給出的正則是 /^1?$|^(11+?)\1+$/
我們先來寫個遍歷 n 以內素數的函式吧。
/**
* 遍歷素數
* @param max 遍歷 2-max 之間的素數
* @return 返回 2-max 之間所有素數
*/function prime(max)
var arr = prime(100);
console.log(arr);
在**裡發現 var re = new regexp('^(11+?)\\1+$') 為什麼不直接寫 var re = /^(11+?)\1+$/ 呢?
回去翻下我寫的幾篇正則文章就會找到答案了。
最傳統的寫法往往是巢狀迴圈來遍歷素數,但是有了正則的幫助,**簡潔優雅。
如果要判斷素數的話,那就更簡潔了。
/**
* 判斷是否是素數
* @param n 要判斷是數字
* @return 返回 true|false
*/function isprime(n)
console.log(-2, isprime(-2));
console.log(1, isprime(1));
console.log(2, isprime(2));
console.log(11, isprime(11));
好了,今天的分享就這麼點東西,雖然沒什麼實際用途,但是可以開闊大家的眼界。
正則不僅僅就是匹配字串,還能判斷素數,二元/三元方程有無解等等等等看似不可思議的邏輯。
素數與素數檢測
一.試除法 根據素數的定義,假設要判斷的自然數為n,那麼最簡單的方法便是用2 n 1 之間的數字依次列舉試除一遍,如果能整除,那說明這個數不是素數,顯然,此種演算法的效率極低。初學c語言的人會使用另一種改進的試除法,那便是除數不用取遍2 n 1 而是取2 int sqrt n 但是當n很大時,此種演...
前端JS演算法之素數
邏輯步驟 1 整除餘數肯定為0。2 js裡面有求餘符號 我們可以判斷餘數是否為0。3 乙個質數只能被1和它本身整除2次,也就是餘數為0的次數只能是2次 4 使用for迴圈,對這個整數從1和它本身之間的整數 包括1和它本身 求餘。5 宣告乙個變數num,記錄餘數為0的次數 6 根據步驟3,判斷num ...
python素數演算法 Python素數檢測的方法
因子檢測 檢測因子,時間複雜度o n 1 2 def is prime n if n 2 return false for i in xrange 2,int n 0.5 1 if n i 0 return false return true 費馬小定理 如果n是乙個素數,a是小於n的任意正整數,那...