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一区二区
免费无码国产v片在线观看| 日本三级免费网站| 日本黄色的视频| 少妇人妻互换不带套| 99福利在线观看| 国产偷人视频免费| 国产免费人做人爱午夜视频| 国产美女网站在线观看| 久久精品无码中文字幕| 欧洲金发美女大战黑人| 久久视频免费在线| 白白操在线视频| 国产黄色激情视频| 人妻av无码专区| 日韩在线一级片| 国产日韩一区二区在线观看| 成年人视频网站免费观看| 日本一区二区黄色| 在线观看国产中文字幕| 日韩成人av免费| 日韩在线视频在线| 国产午夜大地久久| 在线观看的毛片| 桥本有菜av在线| 黄色网页免费在线观看| 色七七在线观看| 老汉色影院首页| 99精品人妻少妇一区二区| 久久久国产欧美| 干日本少妇视频| 黄色高清无遮挡| 国产手机视频在线观看| 成人综合视频在线| 在线免费黄色小视频| 国产精品无码一区二区在线| 日本美女高潮视频| 大胆欧美熟妇xx| 看欧美ab黄色大片视频免费| 国产三级中文字幕| 亚洲乱码国产一区三区| 一级特黄妇女高潮| 亚洲天堂av线| 免费欧美一级视频| 久久综合亚洲精品| 青青草久久伊人| 午夜视频在线瓜伦| 九九爱精品视频| 国产精品88久久久久久妇女| 国产免费观看高清视频| 日本一本草久p| 天天综合网久久| 精品一区二区中文字幕| 国产精品自拍合集| 国产日本欧美在线| 久久久久xxxx| 色乱码一区二区三区在线| 国产原创中文在线观看| 香港三级日本三级a视频| 中文 日韩 欧美| 污污的视频免费观看| 99视频在线视频| 日本爱爱免费视频| 热久久精品免费视频| 日韩精品一区二区三区久久| 国产69精品久久久久久久| 久久国产精品免费观看| 青青草影院在线观看| 国产麻豆电影在线观看| 三年中国中文在线观看免费播放| 色悠悠久久综合网| 亚洲高清免费在线观看| 性猛交ⅹ×××乱大交| 国产福利在线免费| 国产一级免费大片| 亚洲高清av一区二区三区| а 天堂 在线| 欧美日韩亚洲国产成人| 中文字幕日韩精品无码内射| 污污污污污污www网站免费| 免费人成自慰网站| 能在线观看的av| 国产三级三级三级看三级| 国内国产精品天干天干| 国产高清精品软男同| 99久re热视频精品98| www.国产在线视频| 日韩毛片在线免费看| gai在线观看免费高清| 99热一区二区三区| 99热在线这里只有精品| 尤蜜粉嫩av国产一区二区三区| jizz大全欧美jizzcom| 二级片在线观看| 国产h视频在线播放| 亚洲综合婷婷久久| 大陆av在线播放| the porn av| wwwwww欧美| 超碰在线公开97| 无码人妻精品一区二区蜜桃网站| 黑人糟蹋人妻hd中文字幕| 亚洲涩涩在线观看| 99精品在线免费视频| 久久久久久久久久毛片| 凹凸国产熟女精品视频| 亚洲精品mv在线观看| 免费国产a级片| 国产999免费视频| 亚洲成色www.777999| 日韩中文字幕在线免费| 热久久久久久久久| www.国产区| 欧美视频在线观看视频| 五月天开心婷婷| 日韩免费高清在线| 国产69精品久久久久999小说| 99九九99九九九99九他书对| 久久人人爽人人爽人人av| 欧美丝袜在线观看| 欧美精品成人网| 鲁一鲁一鲁一鲁一澡| 天堂а√在线中文在线| 污污的视频免费观看| 亚洲色图久久久| 无遮挡又爽又刺激的视频| 欧美图片激情小说| 青青草影院在线观看| 在线播放免费视频| 日韩成人av免费| gai在线观看免费高清| 免费看污污网站| 在线观看高清免费视频| 香蕉视频禁止18| 国产喷水theporn| 15—17女人毛片| 日本不卡一区在线| 欧美日韩一区二区三区69堂| 丰满少妇在线观看| 亚洲综合日韩欧美| 国产aⅴ爽av久久久久| www.51色.com| 91九色国产ts另类人妖| 久久免费一级片| 欧美视频在线观看视频| 国产伦精品一区二区三区四区视频_| 欧美性猛交内射兽交老熟妇| 久草免费福利在线| 97成人在线观看视频| av网站在线不卡| 国产精品中文久久久久久| 最新视频 - x88av| 成人黄色av片| 91插插插插插插插插| 成人手机视频在线| 蜜臀av色欲a片无码精品一区| 18禁免费无码无遮挡不卡网站| 熟妇人妻va精品中文字幕| 亚洲小视频网站| 黄色成人在线免费观看| 日本成年人网址| 久久精品亚洲天堂| 国产自产在线视频| 免费涩涩18网站入口| 中文字幕精品在线播放| 18禁男女爽爽爽午夜网站免费| 亚洲 激情 在线| 日韩黄色短视频| 中文字幕永久有效| 国产人妻777人伦精品hd| 久久这里只精品| 久草免费福利在线| 男女污污视频网站| 99热成人精品热久久66| 日日噜噜夜夜狠狠久久丁香五月| 国产熟女高潮视频| 国产在线xxxx| 色姑娘综合天天| 精品999在线| 免费无码毛片一区二三区| 99中文字幕在线| 日本888xxxx| 国产男女在线观看| 9色porny| 欧美日韩午夜爽爽| 男人的天堂最新网址| 久久国产色av免费观看| 欧美大黑帍在线播放| 天天色天天干天天色| 国产高清视频网站| 日本在线视频www| 日本免费不卡一区二区| www.亚洲成人网| 男插女免费视频| 欧洲在线免费视频| 91看片破解版| www.成年人| 欧美性视频在线播放| 亚洲美女性囗交| 亚洲av无日韩毛片久久| 国产一区二区在线观看免费视频|