亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

檢查素數的正則表達式分享

2020-03-16 21:11:19
字體:
來源:轉載
供稿:網友
一般來說,我們會使用正規表達式來做字符串匹配,今天在網上瀏覽的時候,看到了有人用正則表達式來檢查一個數字是否為素數(質數),讓我非常感興趣
 
 
這個正則表達式如入所示:
檢查素數的正則表達式分享

檢查素數與否的正則表達式

要使用這個正規則表達式,你需要把自然數轉成多個1的字符串,如:2 要寫成 “11”, 3 要寫成 “111”, 17 要寫成“11111111111111111”,這種工作使用一些腳本語言可以輕松的完成。

一開始我對這個表達式持懷疑態度,但仔細研究了一下這個表達式,發現是非常合理的,下面,讓我帶你來細細剖析一下是這個表達式的工作原理。

首先,我們看到這個表達式中有“|”,也就是說這個表達式可以分成兩個部分:/^1?$/ 和 /^(11+?)/1+$/

  • 第一部分:/^1?$/, 這個部分相信不用我多說了,其表示匹配“空串”以及字串中只有一個“1”的字符串。
  • 第二部分:/^(11+?)/1+$/,這個部分是整個表達式的關鍵部分。其可以分成兩個部分,(11+?) 和/1+$,前半部很簡單了,匹配以“11”開頭的并重復0或n個1的字符串,后面的部分意思是把前半部分作為一個字串去匹配還剩下的字符串1次或多次(這句話的意思是——剩余的字串的1的個數要是前面字串1個數的整數倍)。

可見這個正規則表達式是取非素數,要得到素數還得要對整個表達式求反。通過上面的分析,我們知道,第二部分是最重要的,對于第二部分,舉幾個例子,

 

示例一:判斷自然數8。我們可以知道,8轉成我們的格式就是“11111111”,對于(11+?),其匹配了“11”,于是還剩下“111111”,而/1+$正好匹配了剩下的“111111”,因為,“11”這個模式在“111111”出現了三次,符合模式匹配,返回true。所以,匹配成功,于是這個數不是質數。

示例二:判斷自然數11。轉成我們需要的格式是“11111111111”(十一個1),對于(11+?),其匹配了“11”(前兩個1),還剩下“111111111”(九個1),而/1+$無法為“11”匹配那“九個1”,因為“11”這個模式并沒有在“九個1”這個串中正好出現N次。于是,我們的正則表達式引擎會嘗試下一種方法,先匹配“111”(前三個1),然后把“111”作為模式去匹配剩下的“11111111”(八個1),很明顯,那“八個1”并沒有匹配“三個1”多次。所以,引擎會繼續向下嘗試……直至嘗試所有可能都無法匹配成功。所以11是素數。

通過示例二,我們可以得到這樣的等價數算算法,正則表達式會匹配這若干個1中有沒有出現“二個1”的整數倍,“三個1”的整數倍,“四個1”的整數倍……,而,這正好是我們需要的算素數的算法?,F在大家明白了吧。

下面,我們用perl來使用這個正規則表達式不停地輸出素數:(關于perl的語法我就不多說了,請注意表達式前的取反操作符)

perl -e'$|++;(1 x$_)!~/^1?$|^(11+?)/1+$/&&print"$_ "while ++$_' 

另外,讓我們來舉一反三,根據上述的這種方法,我們甚至可以用正則表達式來求證某方式是否有解,如:

  • 二元方程:17x + 12y = 51   判斷其是否有解的正則表達式是:^(.*)/1{16}(.*)/2{11}$
  • 三元方程:11x + 2y + 5z = 115 判斷其是否有解的正則表達式是:^(.*)/1{10}(.*)/2{1}(.*)/3{4}$

大家不妨自己做做練習,為什么上述的兩個正則表達式可以判斷方程是否有解。如果無法參透其中的奧妙的話,你可以讀讀這篇英文文章。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线免播放器| 日韩视频一区在线| 国产成人a亚洲精品| 成人网欧美在线视频| 欧美www视频在线观看| 欧美日韩一区二区精品| 欧美精品一区二区免费| 亚洲欧美日韩精品久久| 国产69精品久久久久久| 亚洲精品国产综合久久| 综合网中文字幕| 精品国产一区二区三区久久狼黑人| 国产精品中文在线| 欧美日韩国产丝袜美女| 国产91ⅴ在线精品免费观看| 久久亚洲国产成人| 国产精品自拍偷拍视频| www.日韩视频| 欧美怡红院视频一区二区三区| 欧美有码在线观看视频| 精品成人久久av| 91亚洲国产精品| 亚洲精品在线不卡| 日韩精品有码在线观看| 成人在线视频福利| 一本一本久久a久久精品牛牛影视| 亚洲欧洲日韩国产| 色吧影院999| 亚洲免费精彩视频| 日韩欧美中文字幕在线播放| 中日韩美女免费视频网址在线观看| 欧美成人精品在线视频| 亚洲资源在线看| 日本国产欧美一区二区三区| 国产成人精品久久二区二区91| 欧美精品videosex极品1| 午夜精品99久久免费| 国产精品亚发布| 国产精品91久久久| 91精品久久久久久久久中文字幕| 中文字幕亚洲无线码a| 欧美黑人性视频| 久久久精品2019中文字幕神马| 欧美壮男野外gaytube| 精品国产一区二区三区久久久| 97av在线视频免费播放| 亚洲国产精品人久久电影| 爽爽爽爽爽爽爽成人免费观看| 午夜精品在线观看| 欧美猛男性生活免费| 97不卡在线视频| 亚洲欧美中文字幕在线一区| 岛国av在线不卡| 国产亚洲美女久久| 亚洲精品一区二区三区不| 欧美日韩亚洲激情| 精品高清美女精品国产区| 91免费高清视频| 国产日韩在线一区| 日韩av电影手机在线| 亚洲乱码av中文一区二区| 欧美精品日韩三级| 91av在线不卡| 国产精品久久网| 亚洲国产成人精品电影| 中文字幕亚洲综合久久筱田步美| 在线观看亚洲视频| 日韩欧美国产网站| 日韩av在线免费观看| 狠狠综合久久av一区二区小说| 2024亚洲男人天堂| 国产成人av网址| 日韩hd视频在线观看| 欧美野外猛男的大粗鳮| 亚洲国产日韩欧美在线图片| 亚洲电影在线看| 欧美孕妇孕交黑巨大网站| 欧美成人午夜免费视在线看片| 国产精品爽爽爽爽爽爽在线观看| 亚洲jizzjizz日本少妇| 久久免费视频网站| 日韩亚洲欧美中文高清在线| 亚洲无线码在线一区观看| www.欧美免费| 欧美成人小视频| 热久久视久久精品18亚洲精品| 国产免费一区二区三区在线观看| 国产精品极品在线| 久久这里只有精品99| 日韩在线视频免费观看| 久久久久久国产精品| 国产精品美女无圣光视频| 国产成人精品在线观看| 亚洲free性xxxx护士hd| 亚洲精品久久久久国产| 欧美做受高潮电影o| 最近2019中文字幕在线高清| 精品久久久久久久久中文字幕| 成人免费视频网| 91国语精品自产拍在线观看性色| 亚洲一区二区三区视频播放| 国产精品国产自产拍高清av水多| 色综合视频一区中文字幕| 在线视频亚洲欧美| 国产精品美女www| 亚洲图中文字幕| 色综合男人天堂| 55夜色66夜色国产精品视频| 亚洲人免费视频| 国内外成人免费激情在线视频网站| 亚洲视频在线观看免费| 国产精品爽黄69天堂a| 中文字幕亚洲一区二区三区五十路| 亚洲精品99久久久久中文字幕| 亚洲成人三级在线| 久久九九亚洲综合| 成人久久18免费网站图片| 一区二区福利视频| 久久久之久亚州精品露出| 国产99视频精品免视看7| 色妞色视频一区二区三区四区| 久久久久中文字幕| 91九色国产视频| 亚洲三级av在线| 亚洲人成啪啪网站| 亚洲国产精品免费| 中国日韩欧美久久久久久久久| 2019中文字幕在线观看| 国产精品99免视看9| 亚洲性视频网站| 国产精品麻豆va在线播放| 国产精品电影观看| 国产成人精品久久亚洲高清不卡| 亚洲福利小视频| 国内精品久久久久影院 日本资源| 欧美极度另类性三渗透| 精品美女久久久久久免费| 91精品美女在线| 影音先锋欧美精品| 国产成人精品日本亚洲专区61| 国产美女直播视频一区| 在线看国产精品| 国产精品久久久久久搜索| 亚洲视频在线观看免费| 亚洲精品91美女久久久久久久| 国产日产欧美a一级在线| 成人国产精品色哟哟| 亚洲黄色在线观看| 欧美日本高清视频| 国产亚洲欧美日韩精品| 久久精品最新地址| 久久国产一区二区三区| 亚洲欧美在线免费观看| 国产精品2018| 欧美丰满片xxx777| 国产成人亚洲综合青青| 久久精品亚洲热| 91黑丝在线观看| 欧美肥婆姓交大片| 色悠久久久久综合先锋影音下载| 成人a在线视频| 国产丝袜精品第一页| 国内精品久久久久伊人av| 精品久久久久久久大神国产|