我們都知道Regular Expression是一個很厲害的工具,但是它可以用來判斷質數,是不是聽起來有點嚇人:P
我們先來看一下程式碼:
1 2 3 4 5 |
|
它是正確的嗎?
其實這是最重要的問題,如果它一點都不正確,那它一點都不值得討論。
讓我們來做一些驗證:
1 2 3 4 5 |
|
看起來好像是對的,不過這是爲什麼?我們總不能試了幾個整數就説它是正確的,這樣不太講道理。
神奇的黑魔法
其實原理很簡單,我們一段一段來解釋清楚。
首先是^1?$
的部分,這段是用來解决當數字是0或者是1的特殊情况,所以當出現的數字是0或者是1的時候就會被比對到,程式就會輸出false
。
後面的^(11+?)\1+$
是在做什麼呢?\1+
是代表前面(11+?)
的内容要重覆一次以上。哪(11+?)
是幹什麼用的呢?它的作用就是用來比對長度從2開始1..1
的字串,所以如果你輸入的數字是一個合數,那麼就會被比對成功,程式就會輸出false
。
所以老實說,我們不用太期待這個程式碼會多有效率,只是寫起來很酷罷了,Just for fun!