最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript實(shí)現(xiàn)Emrips反質(zhì)數(shù)枚舉的示例代碼

 更新時(shí)間:2017年12月06日 16:17:41   作者:GuJinYu  
下面小編就為大家分享一篇javascript實(shí)現(xiàn)Emrips反質(zhì)數(shù)枚舉的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

今天看到一個(gè)kata,提出一個(gè)“emirps”的概念:一個(gè)質(zhì)數(shù)倒轉(zhuǎn)后得到的是一個(gè)不同的質(zhì)數(shù),這個(gè)數(shù)叫做“emirps”。

例如:13,17是質(zhì)數(shù),31,71也是質(zhì)數(shù),13和17是“emirps”。 但是質(zhì)數(shù)757,787,797是回文質(zhì)數(shù),這意味著反轉(zhuǎn)的數(shù)字與原始數(shù)字相同,所以它們不被認(rèn)為是“emirps”。

題目要求寫一個(gè)函數(shù)輸入一個(gè)正整數(shù)n,返回小于n的“emirps”的個(gè)數(shù),其中最大“emirps”、以及所有小于n的“emirps”的和。

解題思路為先枚舉出所有小于n的質(zhì)數(shù),然后剔除回文質(zhì)數(shù)以及顛倒后為合數(shù)的數(shù)。

先寫判斷質(zhì)數(shù)的函數(shù)

主要根據(jù)三個(gè)數(shù)學(xué)結(jié)論:

所有合數(shù)都是若干個(gè)質(zhì)數(shù)的乘積

如一個(gè)數(shù)可以進(jìn)行因式分解,那么兩個(gè)因數(shù)一定是一個(gè)小于等于sqrt(n),一個(gè)大于等于sqrt(n)。

所有大于3的質(zhì)數(shù)都是6X+1或者6X-1這種形式,也就是6的倍數(shù)的相鄰的數(shù),但并不是所有6X+1或者6X-1都是質(zhì)數(shù)。

第一個(gè)結(jié)論用反證法即可證明

第三個(gè)結(jié)論證明:

我們把數(shù)字都表示為以下形式 6X-1、6X、6X+1、6X+2、6X+3、6X+4 (X為正整數(shù)) 6X => 2*3x 6X+2 => 2(3x+1) 6X+3 => 3(2x+1) 6X+4 => 2(3x+2) 可證明這些肯定不為質(zhì)數(shù),即質(zhì)數(shù)只能為6X-1或者6X-1

代碼:

function isPrimeNumber(num){
  
 if(num == 2 || num == 3){
  return true;
 }/*2、3特殊處理*/
  
 if(num % 6 != 1 && num % 6 != 5){
  return false;
 }/*根據(jù)結(jié)論三排除*/
  
 for(var i=5;i<=Math.sqrt(num);i+=6){
  if(num % i == 0 || num % (i+2) == 0){
   return false;
  }
 }/*根據(jù)結(jié)論二、結(jié)論三排除*/
  
 return true;
}

再剔除回文質(zhì)數(shù)以及顛倒后為合數(shù)的數(shù)

代碼:

function emirpNumber(num){
 
 var reverseNumber = Number(String(num).split('').reverse().join(''))
  
 if(reverseNumber != num && isPrimeNumber(reverseNumber)){
  return true;
 }
 else{
  return false;
 }
}

最后輸出想要的結(jié)果

代碼:

function findEmirp(n){
 
 var emirpGroup = [];
 
 for(var i=1;i<n;i++){
  if(isPrimeNumber(i) && emirpNumber(i)){
   emirpGroup.push(i);   
  }
 }
  
 return [
  'n為:' + n,
  '數(shù)量為:' + emirpGroup.length,
  '最大數(shù):' + emirpGroup[emirpGroup.length - 1],
  '求和:' + emirpGroup.reduce(function(total,current){
   return total + current;
  })
 ]
}

看一下輸出結(jié)果和用時(shí)

n=1000000:

n=10000000:

以上這篇javascript實(shí)現(xiàn)Emrips反質(zhì)數(shù)枚舉的示例代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

梓潼县| 浮梁县| 滕州市| 黄骅市| 眉山市| 边坝县| 和静县| 鄂伦春自治旗| 沙雅县| 青阳县| 界首市| 西林县| 南涧| 尤溪县| 松江区| 巴彦淖尔市| 石棉县| 宁明县| 辛集市| 称多县| 区。| 乌苏市| 康保县| 元氏县| 南木林县| 祥云县| 上林县| 资兴市| 连江县| 油尖旺区| 元氏县| 吉首市| 安仁县| 衢州市| 托克逊县| 扶风县| 宁波市| 天津市| 芦山县| 三河市| 信阳市|