比如计算100~200内的所有素数。怎么用for循环嵌套实现呢
你先不用代码,尝试自己在纸上一步步是怎么解决这个问题。
比如你肯定会从100开始数,然后判断这个数是不是素数。
如果是素数就累积一下总和。
如果不是就继续数。
最终你数到了200,你也就知道了最终的和。
然后你就可以把这个流程写成代码了。
非常简单的一套朴素算法题,按照素数的本质定义一个判断素数的函数isPrime。
var isPrime = function (num) {
if (num <= 1) {
return false;
}
for (var i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
for (var i = 100; i <= 200; i++) {
if (isPrime(i)) {
console.log(i);
}
}
function prime(n){
var primeArr=[];
for(var i = 100; i <= n; i++){
var flag=true;
for (var j = 2;j <= i - 1;j++) {
if (i % j == 0)
flag = false;
}
if(flag){
primeArr.push(i);
}
}
return primeArr;
}
prime(200);
从100开始计数,在计算机里,我们就需要设置一个变量i=100,我们再准备好一个用来存放素数和的变量sum=0
判断当前数i是否为素数,如果是,sum=sum+i
-
继续数数,即i=i+1.如果i>200,那么结束,sum的值就是素数之和,否则重复第2部
这就是一个循环的步骤,在大部分语言中,都提供了for循环,来简化以上的步骤。 for(设置初始变量,例如i=100, sum=0; 判断是否进入这一个循环,如果不符合条件,结束循环; 循环体内执行一次后需要变化的数据,如i=i+1){ 这里是循环体 }
只是算法而已,先写伪代码,把主要的写出来,再翻译成js,实在不行先写成c语言,然后稍微改一些