gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

javascript怎么求素數

求素數的方法:1、遍歷1~n區間中的所有自然數給n來除,若余數為0則表示該數n不是素數,否則就是素數,語法“for(i=2;i<n;i++){if(n%i===0){return false;}}”。2、利用素數平方根范圍,語法“for(i=2;i<=Math.sqrt(n);i++){if(n%i===0){return false;}}”。

javascript怎么求素數

前端(vue)入門到精通課程:進入學習

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

素數的概念

素數又叫質數,素數是指在大于1的自然數中,除了1和它本身以外,不能被其他自然數整除的數。

100以內的素數:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97,共計25個。

JavaScript判定素數的四種方法

1、素數只能被1和自身整除

素數只能被1和自身整除,所以遍歷(1,n)開區間中的所有自然數給n來除,若存在整除,即余數為0,則表示該數n不是素數,否則就是素數。

function isPrime(n) {   n = parseInt(n);     if (n <= 3) {     return n > 1;   }     for (let i = 2; i < n; i++) {     if (n % i === 0) {       return false;     }   }   return true; }

但是這種算法的復雜度為O(n)

2、素數平方根范圍

假設n不是素數,則n除了可以被1和n整除外,還可以被i、j整除,即 n / i = j…0,比如15不是素數,15 / 3 = 5,比如35不是素數,35 / 5 = 7,此時i,j必然分別處于(1, Math.sqrt(n)]和[Math.sqrt(n), n) 之中,比如Math.sqrt(15) ≈ 3.8,則 3處于(1,3.8],5處于[3.8, 15)。比如Math.sqrt(4) = 2,則2處于(1,2]中,也處于[2,4)中。

function isPrime(n) {   n = parseInt(n);     if (n <= 3) {     return n > 1;   }     for (let i = 2; i <= Math.sqrt(n); i++) {     if (n % i === 0) {       return false;     }   }   return true; }

此時算法復雜度為O(sqrt(n))

3、素數不能非2的其他偶數

除了2,所有偶數都不是素數

javascript怎么求素數

function isPrime(n) {   n = parseInt(n);     if (n <= 3) {     return n > 1;   }     if (n % 2 === 0) {     return false;   }     for (let i = 3; i <= Math.sqrt(n); i += 2) {     if (n % i === 0) {       return false;     }   }   return true; }

for循環中n,只能為上圖淺藍色部分。

因此上面算法減少了一半的循環,時間復雜度為O(sqrt(n) / 2)

需要注意的是,本算法的代碼不能將n % 2 === 0 的判斷條件加入到循環中,如下代碼存在漏洞

function isPrime(n) {   n = parseInt(n);     if (n <= 3) {     return n > 1;   }     for (let i = 3; i <= Math.sqrt(n); i += 2) {     if (n % 2 === 0 || n % i === 0) {       return false;     }   }   return true; }

此時4、6、8都會被判定為素數。

漏洞形成的原因是,for循環的循環條件 i <= Math.sqrt(n) 不成立,比如n=4時,i <= Math.sqrt(4) 不成立,導致n無法進入循環中n % 2 === 0 的判斷,而是直接退出循環,return true。

該算法只能保證循環條件 i <= Math.sqrt(n) 成立的n值判斷素數正確,即 n >= i^2 = 9 時。

4、大于等于5的素數一定和6的倍數相鄰

大于等于5的素數一定和6的倍數相鄰

(注意這句話不等價于:和6的倍數相鄰的數一定是大于5的素數,該結論不成立。)

javascript怎么求素數

如上圖中,將大于等于5的數分為了:6y-1、6y、6y+1、6y+2、6y+3、6y+4(y>=1)

其中,6y、6y+2、6y+3、6y+4都不可能是素數,只有6y-1和6y+1可能是素數。

另外,6y-1(y>=1)和 6y + 5 (y>=0)等價。

所以,我們可以將n不為6y-1(或6y+5)和6y+1的數直接排除,排除方法為,

  if (n % 6 !== 1 && n % 6 !== 5) {     return false;   }

下面要剔除掉6y-1(或6y+5)和6y+1中的非素數,

  for (let i = 5; i <= Math.sqrt(n); i += 6) {     if (n % i === 0 || n % (i + 2) === 0) {       return false;     }   }

這里大家比較疑惑的可能有兩點:

  • for循環i自增為啥是 6
  • for循環中素數判定的條件為啥是 n % i === 0 || n % (i+2) === 0

javascript怎么求素數

我們看上面圖解,可以發現,6y-1,是基數為5,差值為6的等差數列,即 5 + 6x :

  • 對于 5 + 6x 而言,如果x為5的倍數(5 * z),則5 + 6x = 5 + 6 * 5 * z = 5 *(1+6z),則此時5 + 6x可以被5整除。
  • 5 + 6x 還可以轉化為 5 + 6 + 6 * (x-1) = 11 + 6(x-1),則只要x-1為11的倍數,則5 + 6x可以被11整除
  • 5 + 6x 還可以轉化為 5 + 12 + 6 * (x-2) = 17 + 6(x-2),則只要x-2為17的倍數,則5 + 6x可以被17整除
  • ……

6y+1,是基數為7,差值為6的等差數列,即 7 + 6x :

  • 對于 7 + 6x 而言,如果x為7的倍數(7 * z),則7 + 6x = 7 + 6 * 7 * z = 7 *(1+6z),則此時7 + 6x可以被7整除。
  • 7 + 6x 還可以轉化為 7 + 6 + 6 * (x-1) = 13 + 6(x-1),則只要x-1為13的倍數,則7 + 6x可以被13整除,
  • 7 + 6x 還可以轉化為 7 + 12 + 6 * (x-2) = 19 + 6(x-2),則只要x-2為19的倍數,則7 + 6x可以被19整除,
  • ……

所以6y-1和6y+1可能整除的數自增量為6,這是for循環i自增為啥是 6的原因

且6y-1和6y+1的整除數基數為5和7,相差為2,這是for循環中素數判定的條件為啥是 n % i === 0 || n % (i+2) === 0的原因

function isPrime(n) {   n = parseInt(n);     if (n <= 3) {     return n > 1;   }     if (n % 6 !== 1 && n % 6 !== 5) {     return false;   }     for (let i = 5; i <= Math.sqrt(n); i += 6) {     if (n % i === 0 || n % (i + 2) === 0) {       return false;     }   }     return true; }

此時時間復雜度為 O(sqrt(n) / 3)

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
337p粉嫩大胆噜噜噜鲁| 国产 日韩 亚洲 欧美| 97中文字幕在线| 欧美做受777cos| 五月天婷婷影视| 狠狠干狠狠操视频| 国产成年人视频网站| 国产高清视频网站| 亚洲综合色在线观看| 在线观看免费视频高清游戏推荐| 美女黄色片视频| 最新中文字幕久久| 日韩av加勒比| 白白操在线视频| 国产九九九九九| 欧美激情国产精品日韩| 欧美日韩在线成人| 中文字幕资源在线观看| 麻豆中文字幕在线观看| 成年女人18级毛片毛片免费| 久久这里只有精品23| 成人在线观看黄| 四虎成人在线播放| 99视频精品全部免费看| 免费无码不卡视频在线观看| 成年人视频网站免费观看| 国产一级不卡毛片| 91精品国产三级| 欧美精品一区二区三区三州| 亚洲色精品三区二区一区| 中文字幕亚洲乱码| 台湾无码一区二区| 任你操这里只有精品| 999久久久精品视频| 亚洲一区二区三区av无码| 不卡av免费在线| 99er在线视频| 91欧美视频在线| 精品国产一区三区| 一级片黄色免费| 999香蕉视频| 一本色道久久88亚洲精品综合 | xxxx18hd亚洲hd捆绑| 欧美精品aaaa| av网站大全免费| 亚洲高清视频免费| 嫩草av久久伊人妇女超级a| 91免费黄视频| 全黄性性激高免费视频| 日韩在线一区视频| av片中文字幕| 男女激情无遮挡| 人人妻人人澡人人爽欧美一区| 亚洲女人在线观看| 天天爽人人爽夜夜爽| 欧美日韩成人免费视频| 国产午夜大地久久| 欧美在线观看黄| 午夜久久久久久久久久久| 国产精品无码一本二本三本色| 黄色片一级视频| 波多野结衣家庭教师在线| av一区二区三区免费观看| 超碰在线免费观看97| 91小视频在线播放| 欧美激情国内自拍| 中文字幕超清在线免费观看| 欧美视频亚洲图片| 国产毛片久久久久久| 手机av在线网站| 免费看污污视频| 国产91沈先生在线播放| 国产欧美高清在线| 中文字幕av导航| 日韩av综合在线观看| 狠狠操狠狠干视频| 日韩av片免费观看| 国产免费一区二区三区四在线播放| 高清无码视频直接看| 日韩亚洲欧美视频| 成人一区二区免费视频| 免费在线激情视频| 久久久999免费视频| 18禁网站免费无遮挡无码中文| 黄色成人在线看| 欧美午夜性视频| 日韩一级特黄毛片| 日韩 欧美 视频| 大j8黑人w巨大888a片| 日本免费黄视频| 国内自拍视频网| 台湾无码一区二区| 91社在线播放| 欧美日韩亚洲一| www.xxx亚洲| 不用播放器的免费av| www.亚洲一区二区| 欧美高清中文字幕| 亚洲 高清 成人 动漫| 成人一级片网站| 亚洲欧美国产日韩综合| 偷拍盗摄高潮叫床对白清晰| 欧美精品久久96人妻无码| 九九热只有这里有精品| 成人一级片网站| 欧美视频第一区| 久久这里只有精品18| 天天碰免费视频| 欧美少妇一级片| 亚洲色成人一区二区三区小说| 手机精品视频在线| 国产九九九九九| 18禁免费观看网站| 日本老太婆做爰视频| 午夜精品久久久内射近拍高清| 青春草在线视频免费观看| 97在线国产视频| 99中文字幕在线| 久久久久久久久久久福利| 亚洲av无日韩毛片久久| www.四虎成人| 精品人妻人人做人人爽| 九色91popny| 黄色片网址在线观看| 天天干天天色天天干| 欧美激情国产精品日韩| 欧美女同在线观看| 日韩视频在线视频| 国产精品va在线观看无码| 久热精品在线观看视频| 成人短视频在线观看免费| 欧美性受xxxx黑人猛交88| 日本 片 成人 在线| 人妻无码久久一区二区三区免费| 欧美在线一区视频| 樱空桃在线播放| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 国产成人在线小视频| 三上悠亚在线一区二区| 国产偷人视频免费| 国产黄页在线观看| 九九热免费精品视频| 手机在线成人免费视频| 能看的毛片网站| 六月丁香婷婷在线| 成人免费观看视频在线观看| 免费看欧美一级片| 国产精品69页| 免费av不卡在线| 国内自拍第二页| 欧美一级黄色录像片| 色综合五月婷婷| 久久久久久久久久一区| 草草久久久无码国产专区| 三上悠亚在线一区二区| 污污动漫在线观看| 欧美一级xxxx| 超碰免费在线公开| 特级黄色录像片| 午夜久久久久久久久久久| 日韩精品视频久久| 蜜桃传媒一区二区三区| 亚洲精品偷拍视频| 日本高清一区二区视频| 久久久精品高清| 午夜在线视频免费观看| 国产大尺度在线观看| 青春草在线视频免费观看| wwwwww欧美| 在线免费视频a| 少妇性l交大片| 日本成人黄色网| 色综合手机在线| 欧美aaa在线观看| 国产综合av在线| 欧美伦理视频在线观看| 可以在线看的黄色网址| 真人做人试看60分钟免费| 国产极品在线视频| 午夜免费福利视频在线观看| a级免费在线观看| 奇米影音第四色| 97国产在线播放| 国产三级三级看三级| 缅甸午夜性猛交xxxx| 日本激情综合网| 国内少妇毛片视频| 亚洲第一成肉网| 欧美精品自拍视频| 日韩精品免费一区| 999精品网站| 300部国产真实乱| 狠狠热免费视频| 久久久久免费看黄a片app| 中文字幕超清在线免费观看| 麻豆tv在线播放| 91精品一区二区三区四区| www.桃色.com| 亚洲精品自拍网| 国产成人av影视|