Простые числа
Вложений: 1
Привет! Кто может объяснить, почему limit становится undefined? Это происходит во время второй итерации во внешнем цикле
|
Maine, потому что Вы явно присваиваете ему undefined.
|
Maine,
а код не судьба вставить вместо картинки? Цитата:
|
function PrimeNumbers(limit) {
var result = [2];
var max = Math.floor(Math.sqrt(limit));
var number = 3;
var isPrime = false;
for (number; number <= limit; number+=2) {
for (var c = 2; c < number; c++) {
if (number%c == 0) {
isPrime = false;
break;
} else {
isPrime = true;
}
}
if(isPrime) {
result.push(number);
}
return result;
}
}
console.log(PrimeNumbers(100));
|
Цитата:
|
Возможно это из-за других ошибок:
1) строка 8: for(number; number <= limit; number+=2) { вместо этого напишите: for(number = 3; number <= limit; number+=2) { 2) строка 3: var result = [2]; просто написать: var result = 2; |
Maine,
Что-то я не вижу никаких undefined. Все работает.
function PrimeNumbers(limit) {
var result = [2];
var max = Math.floor(Math.sqrt(limit));
var number = 3;
var isPrime = false;
for (number; number <= limit; number+=2) {
for (var c = 2; c < number; c++) {
if (number%c == 0) {
isPrime = false;
break;
} else {
isPrime = true;
}
}
if(isPrime) {
result.push(number);
}
return result;
}
}
alert(PrimeNumbers(100));
|
Цитата:
|
Maine,
Результат получается в соответствии с вашим кодом: В строке 3 первый result var result = [2]; В строке 20 - второй result.push(number); |
Maine,
Одно маааленькое изменение в вашем коде
function PrimeNumbers(limit) {
var result = [2];
var max = Math.floor(Math.sqrt(limit));
var number = 3;
var isPrime = false;
for (number; number <= limit; number+=2) {
for (var c = 2; c < number; c++) {
if (number%c == 0) {
isPrime = false;
break;
} else {
isPrime = true;
}
}
if(isPrime) {
result.push(number);
}
}
return result;
}
alert(PrimeNumbers(100));
|
| Часовой пояс GMT +3, время: 13:50. |