Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2016, 17:37
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

Простые числа
Привет! Кто может объяснить, почему limit становится undefined? Это происходит во время второй итерации во внешнем цикле
Изображения:
Тип файла: jpg Capture.jpg (152.1 Кб, 11 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2016, 17:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Maine, потому что Вы явно присваиваете ему undefined.
Ответить с цитированием
  #3 (permalink)  
Старый 28.03.2016, 17:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Maine,
а код не судьба вставить вместо картинки?
Сообщение от Maine
почему limit становится undefined?
а зачем limit в 5 строке?
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2016, 18:09
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

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));
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2016, 18:09
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

Сообщение от Ruslan_xDD Посмотреть сообщение
Maine, потому что Вы явно присваиваете ему undefined.
Не поняла, где?
Ответить с цитированием
  #6 (permalink)  
Старый 28.03.2016, 18:21
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Возможно это из-за других ошибок:
1) строка 8: for(number; number <= limit; number+=2) {
вместо этого напишите:
for(number = 3; number <= limit; number+=2) {
2) строка 3: var result = [2];
просто написать:
var result = 2;
Ответить с цитированием
  #7 (permalink)  
Старый 28.03.2016, 18:25
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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));
Ответить с цитированием
  #8 (permalink)  
Старый 29.03.2016, 10:43
Интересующийся
Отправить личное сообщение для Maine Посмотреть профиль Найти все сообщения от Maine
 
Регистрация: 23.02.2016
Сообщений: 19

Сообщение от Dilettante_Pro Посмотреть сообщение
Maine,
Что-то я не вижу никаких undefined. Все работает.
Как работает, када на выходе массив с двумя элементами 2 и 3?
Ответить с цитированием
  #9 (permalink)  
Старый 29.03.2016, 11:24
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Maine,
Результат получается в соответствии с вашим кодом:
В строке 3 первый result
var result = [2];

В строке 20 - второй
result.push(number);
Ответить с цитированием
  #10 (permalink)  
Старый 29.03.2016, 11:53
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простые числа, не превосходящие заданного числа. jutochka123 Общие вопросы Javascript 2 30.09.2017 13:05
Анимация числа, при изменении ширина HTML элемента akkord87 Общие вопросы Javascript 10 15.12.2015 15:43
JS задача. Взаимно простые числа sashok Общие вопросы Javascript 5 23.11.2014 10:16
Есть числа от (0 до 100) что бы все эти числа были заменины в итоге например 110 impi Общие вопросы Javascript 4 08.10.2014 08:30
Необычный алгоритм. Неповторяющиеся числа. broadcast77 Общие вопросы Javascript 5 13.01.2014 10:46