比如计算100~200内的所有素数。怎么用for循环嵌套实现呢
非常简单的一套朴素算法题,按照素数的本质定义一个判断素数的函数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){
这里是循环体
}
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
你先不用代码,尝试自己在纸上一步步是怎么解决这个问题。
比如你肯定会从100开始数,然后判断这个数是不是素数。
如果是素数就累积一下总和。
如果不是就继续数。
最终你数到了200,你也就知道了最终的和。
然后你就可以把这个流程写成代码了。