//Create a function that finds how many prime numbers there are, up to the given integer.
var numoffactor = 0
var count=0
function primenumber(str) {
for (var i = 0; i < str; i++)
for (var g = 0; g < i; g++) {
if (i % g == 0) //if a factor is found
{ numoffactor++ }
}
if (numoffactor == 0) { count++ }
return count
}
console.log(primenumber(9)) //showing 0 no matter what number I put in
console.log(numoffactor)//showing 12
我的逻辑是:从0到str,找到每个整数,每个i循环的因数,如果因数为零,则为质数。但是无论输入如何,输出都是9。而且许多因素似乎都没有了。
最佳答案
您缺少一些要点-
您不会将数字除以0。这是未定义的。
所有数字都可以被1整除。因此,您无需检查它。
您没有将每个数字的numoffactor
重置为0
。
首先缺少循环括号。 numoffactor == 0
检查必须
内循环。
var numoffactor = 0
var count = 0
function primenumber(str) {
if(str <= 1)
return 0;
for (var i = 1; i < str; i++) {
numoffactor = 0;
for (var g = 2; g < i; g++) {
if (i % g == 0){
numoffactor++;
}
}
if (numoffactor == 0) {
count++;
}
}
return count;
}
console.log(primenumber(9))
console.log(numoffactor)
这是另一种无需计算因子数量的解决方案。
var count = 1
function primenumber(str) {
if(str <= 1)
return 0;
for (var i = 0; i < str; i++) {
var g = 2;
for (; g < i; g++) {
if (i % g == 0)
break;
}
if (i == g) {
count++;
}
}
return count;
}
console.log(primenumber(9))
首页这有帮助。
关于javascript - 创建一个函数,查找有多少个质数,直到给定的整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59217044/