js 正則之檢測素數

2021-09-06 16:47:58 字數 946 閱讀 4000

原文:

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的任意正整數,那...