前端學習筆記Web前端之路让前端飞

FreeCodeCamp筆記之:Sum All Primes

2017-10-20  本文已影响20人  delphuy

题目

求小于等于给定数值的质数之和。
只有 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);

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

上一篇下一篇

猜你喜欢

热点阅读