【发布时间】:2021-06-30 09:50:27
【问题描述】:
我正在尝试解决这个问题,即循环遍历 1 到 60 之间的数字以找到总质数。这是我想出的:
var totalPrimeNumber = 0;
for(let i=1; i<=60; i++) {
for(let j= 2; j< i; j++) {
if(i%j ==0) {
console.log(i, "is not a prime number");
}
console.log(i, "is a prime number");
totalPrimeNumber+=1;
}
}
但是输出错误:
3 is a prime number
4 is not a prime number
4 is a prime number
4 is a prime number
5 is a prime number
5 is a prime number
5 is a prime number
6 is not a prime number
6 is a prime number
6 is not a prime number
6 is a prime number
6 is a prime number
6 is a prime number
7 is a prime number
7 is a prime number
7 is a prime number
你知道我该如何解决这个问题吗?
【问题讨论】:
-
一旦你确定一个数不是素数,你需要
break;退出循环。对于检查素数,let j=2; j<=Math.sqrt(i); j++就足够了。 -
更好的方法是编写一个函数
isPrime(number),它返回一个布尔值,并在循环中为i的每个值调用它。把你的问题分解成更小的问题,一次一个地处理。像这样的东西:jsfiddle.net/nha613vg -
这能回答你的问题吗? Number prime test in JavaScript
标签: javascript loops primes