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一区二区
少妇无码av无码专区在线观看| 午夜激情视频网| 成人在线观看黄| 青青草影院在线观看| 亚洲人成无码网站久久99热国产 | 亚洲网中文字幕| 久久精品无码中文字幕| 奇米影视亚洲色图| 麻豆md0077饥渴少妇| 少妇人妻在线视频| 国产一级片91| 日韩一级片播放| 精品少妇人妻av免费久久洗澡| 欧美男女交配视频| 一级黄色片在线免费观看| 韩国中文字幕av| av在线播放亚洲| 国产免费999| 久久久久人妻精品一区三寸| 国产黑丝在线视频| 北条麻妃在线观看| 波多野结衣家庭教师在线播放| 亚洲视频第二页| 久久av综合网| 91黄色在线看| 欧美日韩中文字幕在线播放 | 男人操女人逼免费视频| 在线无限看免费粉色视频| 国产乱淫av片杨贵妃| 污片在线免费看| 日本在线观看a| 欧美三级一级片| 激情五月婷婷六月| 国产精品h视频| 看全色黄大色大片| 黄色a级在线观看| 国产91沈先生在线播放| 欧美少妇一区二区三区| www.成人黄色| 中国一级黄色录像| 成人在线免费观看网址| 午夜av中文字幕| 婷婷视频在线播放| 又色又爽又黄视频| 400部精品国偷自产在线观看| 国产精品jizz在线观看老狼| 亚洲综合在线一区二区| 色姑娘综合天天| 黄色小视频大全| 97精品国产97久久久久久粉红| 97超碰在线视| 日韩精品一区二区免费| av网站手机在线观看| 香港三级韩国三级日本三级| 亚洲中文字幕无码av永久| 免费av网址在线| 国产又大又黄又粗的视频| 亚欧在线免费观看| 超碰97在线看| 欧美国产日韩激情| 欧美黄色免费影院| www.污污视频| 一级全黄肉体裸体全过程| 性一交一乱一伧国产女士spa| 国产 欧美 日韩 一区| 国产3p露脸普通话对白| 中文字幕第21页| 亚洲精品mv在线观看| 在线观看17c| 亚洲中文字幕无码不卡电影| 国产精品久久a| 国产亚洲欧美在线视频| 亚洲高清视频免费| 亚洲理论电影在线观看| 天堂av在线8| 极品粉嫩国产18尤物| 三级av免费看| 欧美a v在线播放| 久久免费看毛片| 中文字幕在线导航| 男人天堂手机在线视频| 男人靠女人免费视频网站| 亚洲国产精品三区| 国产美女在线一区| 中文字幕の友人北条麻妃| 久久久久免费精品| 伊人五月天婷婷| 亚洲 国产 图片| 男人操女人逼免费视频| 97视频久久久| 久久人人爽人人片| 中文字幕第36页| 久章草在线视频| 国产女教师bbwbbwbbw| 精品亚洲视频在线| 色一情一乱一伦一区二区三区日本| 伊人五月天婷婷| 99亚洲精品视频| 精品视频一区二区在线| 国产精品h视频| 午夜久久久精品| 国产真人无码作爱视频免费| 国语对白做受xxxxx在线中国| 亚洲五码在线观看视频| 日韩精品在线中文字幕| 成人一级生活片| 一道本在线观看视频| 青青草视频国产| 亚洲综合123| www.偷拍.com| 又大又硬又爽免费视频| 国产激情片在线观看| 精品国产一区二区三区在线| 欧美视频国产视频| 亚洲欧美自偷自拍另类| 亚洲欧美视频二区| 色综合天天色综合| 国产三级生活片| 偷拍盗摄高潮叫床对白清晰| 日本三级免费观看| 向日葵污视频在线观看| 国产福利在线免费| 免费成人深夜夜行网站视频| 熟妇熟女乱妇乱女网站| 在线观看日本www| 在线观看17c| 天天夜碰日日摸日日澡性色av| 免费欧美一级视频| 日日噜噜夜夜狠狠| 欧美美女性视频| 大桥未久一区二区三区| 天堂8在线天堂资源bt| wwwwwxxxx日本| 麻豆一区二区三区在线观看| 黄色一级片在线看| 国产一伦一伦一伦| www.18av.com| 欧美日韩亚洲自拍| 久久精品国产精品亚洲精品色| 免费成人深夜夜行网站视频| 日韩av资源在线| 男女污污视频网站| 久久久久久香蕉| 一本二本三本亚洲码| 欧美亚洲黄色片| 国产精品美女在线播放| 黄色网页免费在线观看| 福利网在线观看| 国产综合免费视频| www午夜视频| 国产亚洲天堂网| 三级网在线观看| 91丨九色丨蝌蚪| 欧美亚洲另类色图| 国产一二三四区在线观看| 北条麻妃av高潮尖叫在线观看| 亚洲制服中文字幕| 国产一级特黄a大片免费| 大陆极品少妇内射aaaaaa| 亚欧激情乱码久久久久久久久| www.日日操| www.午夜色| 九色91popny| 国产偷人视频免费| av免费在线播放网站| 日韩精品一区二区在线视频| 国产又粗又猛大又黄又爽| 久久久久人妻精品一区三寸| 国产资源第一页| 精品日韩在线播放| 中文字幕av不卡在线| 国产网站免费在线观看| 一级性生活视频| 国产三级日本三级在线播放| 麻豆传传媒久久久爱| 久久亚洲中文字幕无码| 欧美色图另类小说| www.成年人视频| 二级片在线观看| 蜜桃视频一区二区在线观看| 亚洲欧美日韩一级| 天堂av8在线| 999这里有精品| av片中文字幕| 日本在线观看免费视频| 亚洲人成色77777| 怡红院亚洲色图| 色噜噜狠狠一区二区三区狼国成人| 日韩国产小视频| 激情伊人五月天| 免费观看美女裸体网站| 日韩有码免费视频| 欧美性猛交xxx乱久交| 色婷婷一区二区三区av免费看| 一区二区久久精品| 国产在线xxxx| 欧美国产激情视频| 97国产精东麻豆人妻电影| 国产嫩草在线观看| 国产精品无码乱伦|