FreeCodeCamp筆記之:Sum All Primes

作者: delphuy | 来源:发表于2017-10-20 11:50 被阅读20次

题目

求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
For Loops
Array.push()

思路

  1. 看提示 是要用上 for循环,和 push函数;
  2. 先读懂题目,说实话我并不记得神马是质数(输入法都翻了好多页),请原谅一个高考数学只70多分的人;
  3. 看题目下方的验证:
image.png

还是不是很明白要做什么,我特意在纸上画了画


FreeCodeCamp筆記之:Sum All Primes
FreeCodeCamp筆記之:Sum All Primes
  1. 瞬间清晰了很多,思路是从i=2开始(毕竟最小的质数是2)一直循环到num;然后嵌套一个子循环,j 小于< i;当i %j = 0 说明i 除了1和本身还有数能除进,则当前的j 不是质数,需要从判断的数 中减掉;
  2. 不过还是想到一个问题,因为如果num 足够大,i <= num 的for循环可能会超时?
  3. 暂时还想不到其他的好的解法,先写一个出来

解答

function sumPrimes(num) {
 var i=2;                      //因为最小的质数是2,所以初始值设定为2;
 var arr = 0;                  //定义一个变量来记录质数相加的和
 if (num <=2 ){                // 如果num 小于等于2,则直接结束;
    arr = 0; 
 } 
  while (i<=num){              //开始循环
     for (var j=2;j<i;j++){  
       if(i%j === 0){          //开始子循环,判断小于i且大于2的 的数字是否都能被i整除
         arr -= i;             // 如果能被整除,说明i不是质数,需减掉
         break;                //循环结束
       }  
     }
     arr += i;                 //将是质数的i 加入到结果变量
     i++;
  } 
   return arr;  
}
sumPrimes(10);
  • 经验证,脚本OK;
  • 不过仍然有担心比如 num过大会报错,经验证num 大于8600时就会报错:

as the first line. Beware that if you do have an infinite loop in your code this will crash your browser.

  • 再找找看有无更高效的算法;

相关文章

  • FreeCodeCamp筆記之:Sum All Primes

    题目 求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 ...

  • FreeCodeCamp筆記之:Sum All Numbers

    题目 我们会传递给你一个包含两个数字的数组。返回这两个数字和它们之间所有数字的和。最小的数字并非总在最前面。如果你...

  • Sum All Primes

    求小于等于给定数值的质数之和。 只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 ...

  • FreeCodeCamp筆記之:Drop it(*)

    题目 队友该卖就卖,千万别舍不得。当你的队伍被敌人包围时,你选择拯救谁、抛弃谁非常重要,如果选择错误就会造成团灭。...

  • FreeCodeCamp筆記之:Steamroller

    题目 对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。如果你被卡住了,记得开大招 Read-Search-...

  • FreeCodeCamp Intermediate Algori

    FreeCodeCamp 中级算法 个人笔记,仅作留档 Sum All Numbers in a Range 我们...

  • Freecodecamp 算法题 (二)

    Freecodecamp 算法题 (二) 1. Sum All Numbers in a Range 我们会传递给...

  • FCC-Sum All Primes

    求小于等于给定数值的质数之和。只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整...

  • FreeCodeCamp筆記之:Exact Change

    题目 设计一个收银程序checkCashRegister(),其把购买价格(price)作为第一个参数 , 付款金...

  • FreeCodeCamp筆記之:Symmetric Differ

    题目 创建一个函数,接受两个或多个数组,返回所给数组的对等差分(symmetric difference)(△or...

网友评论

    本文标题:FreeCodeCamp筆記之:Sum All Primes

    本文链接:https://www.haomeiwen.com/subject/cqwmuxtx.html